В моем приложении Android у меня есть класс, который дает мне статические строковые значения; что-то вроде этого:Могу ли я иметь один экземпляр интерфейса
public class VehicleInfo {
public static String getVehicleEnginePower(boolean isNew) {
return isNew ? "1800CC" : "1600CC";
}
}
Теперь у меня есть другая категория, поэтому мне придется пройти еще одно логическое значение, и я получаю значение мне нужно. Однако эти категории будут продолжать расти. Поэтому я посмотрел на Open/Closed principle, который выглядит перспективным для быстрого улучшения. Для этого я сделаю класс VehicleInfo
как интерфейс, а затем у меня будут другие классы, реализующие VehicleInfo
.
public interface VehicleInfo {
String getVehicleEnginePower();
}
public class NewVehicle implements VehicleInfo {
@Override
public String getVehicleEnginePower() {
return "1800CC";
}
}
и другие классы категорий также будут примерно такими. Таким образом, мне придется добавить еще один класс для всех новых категорий.
Вопрос, который я хотел задать, заключается в следующем: есть ли способ, которым я могу иметь один экземпляр этого интерфейса? Поскольку во всем потоке приложения пользователь сможет видеть только одну категорию, пока не переключится на другую категорию.
Я не хочу создавать эти классы в нескольких точках. Чтобы прояснить мой вопрос, я хочу сделать что-то подобное в начале моего приложения:
if (isNew) {
VehicleInfo vehicleInfor = new NewVehicle();
}
И во всем приложении, всякий раз, когда я называю VehicleInfo.getVehicleEnginePower
, он должен всегда возвращать мощность двигателя из класса NewVehicle.
Возможно ли это как можно? Или я просто глуп, и мне придется создавать этот интерфейс на нескольких точках?
Вы спрашиваете, как создать синглтон? – shmosel
Почему бы вам не попробовать 'enum' –
В соответствии с вашим требованием вы можете использовать шаблон Builder. Вот это хорошее объяснение с примером для того же [link] (https://sourcemaking.com/design_patterns/builder) –