Абстрактная фабрика (Паттерн)


    И так, если вы видели группы паттернов проектирования, первый у нас по счету идет шаблон проектирования "Абстрактная фабрика". Постараюсь "просто, о сложном". Примеры приводить не стану, их и так полно - взять любую более-менее серьезную библиотеку.

    При рассмотрении порождающих паттернов, обычно используется такое понятие как — объекты-продукты . Фабрика должна иметь операции, которые создают новые объекты, иначе это не фабрика, и эти самые возвращаемые фабрикой объекты, называют продуктами.

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

    Если собрать все в кучу, то при разработке мы должны создать:
  • абстрактный класс — фабрику;
  • абстрактные классы — объекты, которые она будет создавать (это может быть и один объект);
  • написать уже конкретный класс(-ы), который(-ые) будет(-ут) реализовывать методы и/или дополнять их, это будут фабрики производящие семейства объектов;
  • создать реальные классы продуктов (в некоторых случаях они могут быть пустыми и наследовать функционал от своих абстрактных родителей);
    Первые два пункта относятся к проектированию, следующие уже к разработке. Вообще главное потрудиться над проектированием, что бы получить должный эффект от любого паттерна.

    Что мы получим в итоге?

    На тот момент, когда будет много кода и реализованного функционала в целом по приложению — можно будет переключаться между фабриками и получать различные семейства объектов, это достигается тем, что программа (или скрипт) пользуется абстрактными методами фабрики, а в них инкапсулирована работа с классами продуктов.




Добавлена: 28-04-2009 | Пользователем: admin | Просмотров: 2912



Оставить комментарий



капча

Комментарий будет опубликован после проверки модератором

Для подсветки синтаксиса используйте тэги:
<pre><code class="синтаксис" >код</code></pre>
Подерживаются следующие: cpp php javascript sql html-xml css ini