Как динамически наследовать в зависимости от операционной системы? - PullRequest
0 голосов
/ 23 октября 2018

Я разрабатываю для двух операционных систем.У каждого есть конкретная реализация BaseClass.Я хотел бы абстрагироваться от этих реализаций.Моя идея состоит в том, чтобы использовать интерфейс, реализуемый обеими реализациями, а затем возвращать класс, специфичный для ОС, с использованием фабричного шаблона.Это выглядело бы как this .

Однако, чтобы принять этот подход, мне нужно было бы указать, какую реализацию следует использовать перед сборкой приложения, например, с помощью постоянной переменной, содержащей имя ОС (platform переменная в связанном ответе).Мне кажется, это плохой выбор дизайна.Есть ли другой способ определить, какую ОС собирать?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Нет.

Это не тот способ, которым работает Java.Java-программы не скомпилированы для конкретной целевой системы, они должны быть переносимыми и работать на всех системах.См. Возможно ли запустить файл JAR в любой ОС?

Если вам нужно сделать что-то, что действительно зависит от ОС, вы можете, однако, использовать системные свойства, чтобы узнать, на какой ОС работает программа.во время выполнения.Затем вы можете использовать эту информацию, чтобы выбрать подходящую реализацию в какой-то фабрике, но это решение во время выполнения.

Некоторые способы узнать ОС: Как программно определить операционную систему в Java

0 голосов
/ 23 октября 2018

java хранит имя ОС в своих стандартных свойствах, поэтому следующий вызов должен дать вам имя ОС:

System.getProperty("os.name")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...