Как вы устанавливаете определенные свойства для класса, созданного абстрактной фабрикой? - PullRequest
4 голосов
/ 30 июня 2010

Возможно ли, чтобы конкретные фабрики создавали конкретные классы с конкретными для них параметрами, используя абстрактный шаблон фабрики? Или разные конкретные классы, созданные их конкретными фабриками, должны иметь одинаковые поля?

Пример) На изображении ниже, как вы собираетесь создать экземпляр WinButton и OSXButton с различным набором аргументов, данных клиентом (приложением)?

enter image description here

Ответы [ 2 ]

0 голосов
/ 25 июня 2011

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

Пример:

    GUIFactory factory = new WinFactory(WIN_9x_THEME);
    Button greyButton = factory.createButton();
    factory = new WinFactory(WIN_VISTA_THEME, 50);
    Button semiTransparentButton = factory.createButton();
0 голосов
/ 19 мая 2011

Одним из подходов к решению таких проблем является отправка параметров объекта.Например, в C # Object это базовый класс, и вы можете передать параметр типа Object, который может принимать любой производный класс.В реализации этот объект может быть приведен обратно к желаемому производному типу.Даже определенные свойства могут быть установлены таким образом.

...