Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Фабричный метод и абстрактная фабрика

Помогите разобраться.
Чем отличаются данные шаблоны? Когда лучше применять первый, а когда второй?


Ответ

Фабричный метод: есть некий класс, который выполняет свою специфическую функцию. Часть своей функциональности он делегирует внешнему интерфейсу, который инстанцируется через виртуальный метод этого класса. Наследники этого класса, перекрыв этот метод, могут вернуть другие реализации интерфейса, используемого основным алгоритмом класса. Абстрактная фабрика: класс / интерфейс, не содержащий собственной логики. Все его методы возвращают экземпляры других интерфейсов и вызываются внешними компонентами. Этот паттерн позволяет, подменив реализацию одного интерфейса, подменить набор реализаций ограниченного множества интерфейсов. Абстрактная фабрика применяется, когда требуется создать семейство интерфейсов, реализация которых должна подменяться совместно. Например, при доступе к данным есть стандартный интерфейс, отвечающий за подключение, - IDbConnection, и мой интерфейс, ответственный за преобразование объектной модели запроса в текст запроса, соответствующий стандарту определённой СУБД. Оба этих интерфейса инстанцируются одной фабрикой. В то же время, интерфейс IDbConnection объявляет метод CreateCommand, который возвращает реализацию IDbCommand для соответствующего типа подключения. Это - фабричный метод.

Комментариев нет:

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