.NET Factory Pattern

Возможный дубликат:
Интерфейс против абстрактного класса (общий объектно-ориентированный )

Привет, эксперты!

Я читаю заводские выкройки

  1. На основе статьи: http://aspalliance.com/809_Working_with_Factory_Design_Pattern_using_C

Мы определяем интерфейс, интерфейс реализуется классами. На основе определенного атрибута мы решаем, какой класс создается.

  1. Посмотрел другую статью - http://csharpdesignpatterns.codeplex.com/wikipage?title=Factory%20Method%20Pattern&referringTitle=Home

Мы определяем абстрактный класс и реализуем его в подклассах.

Оба приведенных примера совершенно разные. Основываясь на основных принципах, которые я помню.

  • Когда мы используем интерфейс - когда нам нужно реализовать полиморфное поведение
  • Когда мы используем абстрактный класс - для обеспечения базовой функциональности по умолчанию

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

Верны ли эти два подхода?

Приносим извинения за проблемы с форматированием.

заранее спасибо


person Siva    schedule 16.05.2011    source источник
comment
На мой взгляд, использовать ли интерфейсы или абстрактные классы - это деталь реализации, которая напрямую не коррелирует с фабричным шаблоном как таковой. Все, что он делает, - это назначает другой класс (фабрику) для создания объектов вместо того, чтобы вы сами вызывали конструктор. Таким образом, вы можете централизовать любую необходимую закулисную магию, такую ​​как, например, принятие решения о различных факторах, конкретный тип которого нужно создать, сохранение пула объектов для повторного использования объектов на случай, если конструктор по какой-то причине является тяжелым, или заполнение сложных конструкций классов с помощью разумные значения по умолчанию.   -  person SirViver    schedule 16.05.2011


Ответы (1)


Поскольку шаблоны являются абстрактными концепциями, они не зависят строго от реализаций; поэтому использование интерфейсов или абстрактных классов является допустимым подходом imo.

Основная идея фабричного шаблона - «упростить» создание объекта путем создания абстракции.

Используете ли вы интерфейсы или абстрактные классы, зависит от вашей реализации. По моему опыту, фабричный шаблон обычно используется, когда структура классов уже определена. Например, я уже принял решение использовать интерфейсы или абстрактные классы в своей модели, и теперь я хочу провести рефакторинг, чтобы создание объекта было проще => Я выбираю фабричный шаблон. Надеюсь это поможет.

person henginy    schedule 16.05.2011