Сообщение Re[3]: Абстрактная фабрика и дженерики от 20.08.2019 14:13
Изменено 20.08.2019 14:16 ·
Re[3]: Абстрактная фабрика и дженерики
Здравствуйте, Kaifa, Вы писали:
K>вопрос вдогонку. допустим среди устройств есть зарядник устройства, у которого метод создания имеет обязательный параметр — длина кабеля.
Как я понимаю, как правило суть фабрики в том, чтобы абстрагироваться от способа создания объектов и их зависимостей. Поэтому как правило длина кабеля будет параметром (или константой) фабрики:
Клиенты теперь могут не париться с выбором длины, модели, етс, фабрика полностью отвечает за выбор параметров конструктора и экземпляров.
Параметризированные методы Create* это более сложный случай и в целом да, нужно если разные типы имеют один и тот же параметр.
Ещё фабрики могут быть полезны, если надо делать выбор о том, что создавать новый объект или брать существующий.
K>как это лучше реализовывать? наряду к абстрактному интерфейсу IAbstractDeviceFactoryMethod должен появиться такой же в общем-то независимый IAbstractChargerDeviceFactoryMethod?
K>или как это лучше вписать?
Ну если применить ISP, то так оно и выйдет.
А генерики непонятно тут накой. Их надо использовать только если очень надо.
K>вопрос вдогонку. допустим среди устройств есть зарядник устройства, у которого метод создания имеет обязательный параметр — длина кабеля.
Как я понимаю, как правило суть фабрики в том, чтобы абстрагироваться от способа создания объектов и их зависимостей. Поэтому как правило длина кабеля будет параметром (или константой) фабрики:
public ModernAppleDevicesFactory
{
private ICellPhone theOnlyTruePhone = new IPhone();
private int cableLength;
public AppleDevicesFactory(int cableLength) {this.cableLength = cableLength;}
public ICellPhone CreateCellPhone()
{
return theOnlyTruePhone;
}
public ICharger CreateCharger()
{
return new MadeInChinaCharger(this.cableLength);
}
public ILaptop CreateLaptop()
{
return new LaptopApple(DisplayType.RETINA);
}
}
Клиенты теперь могут не париться с выбором длины, модели, етс, фабрика полностью отвечает за выбор параметров конструктора и экземпляров.
Параметризированные методы Create* это более сложный случай и в целом да, нужно если разные типы имеют один и тот же параметр.
Ещё фабрики могут быть полезны, если надо делать выбор о том, что создавать новый объект или брать существующий.
K>как это лучше реализовывать? наряду к абстрактному интерфейсу IAbstractDeviceFactoryMethod должен появиться такой же в общем-то независимый IAbstractChargerDeviceFactoryMethod?
K>или как это лучше вписать?
Ну если применить ISP, то так оно и выйдет.
А генерики непонятно тут накой. Их надо использовать только если очень надо.
Re[3]: Абстрактная фабрика и дженерики
Здравствуйте, Kaifa, Вы писали:
K>вопрос вдогонку. допустим среди устройств есть зарядник устройства, у которого метод создания имеет обязательный параметр — длина кабеля.
Как я понимаю, как правило суть фабрики в том, чтобы абстрагироваться от способа создания объектов и их зависимостей. Поэтому как правило длина кабеля будет параметром (или константой) фабрики:
Клиенты теперь могут не париться с выбором длины, модели, етс, фабрика полностью отвечает за выбор параметров конструктора и экземпляров.
Параметризированные методы Create* это более сложный случай и в целом да, нужно если разные типы имеют один и тот же параметр.
Ещё фабрики могут быть полезны, если надо делать выбор о том, что создавать новый объект или брать существующий.
K>как это лучше реализовывать? наряду к абстрактному интерфейсу IAbstractDeviceFactoryMethod должен появиться такой же в общем-то независимый IAbstractChargerDeviceFactoryMethod?
K>или как это лучше вписать?
Ну если применить ISP, то так оно и выйдет.
А генерики непонятно тут накой. Их надо использовать только если очень надо.
K>вопрос вдогонку. допустим среди устройств есть зарядник устройства, у которого метод создания имеет обязательный параметр — длина кабеля.
Как я понимаю, как правило суть фабрики в том, чтобы абстрагироваться от способа создания объектов и их зависимостей. Поэтому как правило длина кабеля будет параметром (или константой) фабрики:
public ModernAppleDevicesFactory
{
private ICellPhone theOnlyTruePhone = new IPhone();
private int cableLength;
public ModernAppleDevicesFactory(int cableLength) {this.cableLength = cableLength;}
public ICellPhone CreateCellPhone()
{
return theOnlyTruePhone;
}
public ICharger CreateCharger()
{
return new MadeInChinaCharger(this.cableLength);
}
public ILaptop CreateLaptop()
{
return new LaptopApple(DisplayType.RETINA);
}
}
Клиенты теперь могут не париться с выбором длины, модели, етс, фабрика полностью отвечает за выбор параметров конструктора и экземпляров.
Параметризированные методы Create* это более сложный случай и в целом да, нужно если разные типы имеют один и тот же параметр.
Ещё фабрики могут быть полезны, если надо делать выбор о том, что создавать новый объект или брать существующий.
K>как это лучше реализовывать? наряду к абстрактному интерфейсу IAbstractDeviceFactoryMethod должен появиться такой же в общем-то независимый IAbstractChargerDeviceFactoryMethod?
K>или как это лучше вписать?
Ну если применить ISP, то так оно и выйдет.
А генерики непонятно тут накой. Их надо использовать только если очень надо.