блогер
Регистрация: Feb 2006
Сообщений: 1,474
|
1. Фабрика обыкновенная
Со свитчами как-то не выходит использовать, может оно и к лучшему, конечно.
А вот передавать фабрику рендереров какому-нибудь визуальному списку - пракрически везде в социалках используются эти списки. Правда часто вместо класса-фабрики достаточно передать создающий метод или сам класс как фабрику.
Ну т.е. простая фабрика(или просто функция или класс - сути дела не меняет) используется чтобы сказать какому-нибудь компоненту, какие объекты он должен создавать (иначе получиться, что не сможет создавать объекты разных типов)
2. Фабричный метод.
Да, часто используется. Например Вы считаете, что параметризовать объект фабрикой слишком сложно, проще создать еще одного наследника того же листа и перегрузить метод createRenderer():IRenderer
Естественно, не подходит, если типы создаваемых объектов надо менять динамически
3. Абстрактная фабрика.
Практически не используется. Слишком большой оверхед. Может быть только в библиотеках от нее будет какая-то польза. Обычно выгоднее пареметризировать создание отдельных объектов, чем реализовывать интерфейсы создания сразу нескольких.
4. Статичная фабрика (или фабрика-синглтон)
Использую для получения правильно заскинованных компонентов. Чтобы не разбрасывать код по скинованию по всему приложению и можно было меньшей кровью поменять везде красные кнопки на желтые, например.
Недостатки - завязывает все приложение на один класс (в котором куча методов, не нужных отдельным компонентам), в библиотеках практически не применима
Впринципе, можно заменить кучей классов - наследников компонентов, которые их скинуют, или саму фабрику разбить на десяток-другой классов, но, как бы, обычно не сильно надо.
Последний раз редактировалось expl; 19.11.2011 в 15:43.
|