#c_sharp #шаблоны_проектирования
Не понял в чем различия между паттернами 'абстрактная фабрика' и 'строитель'. На основе каких критериев выполняется выбор? Какие вопросы я должен задать себе, что бы понять какой порождающий паттерн из двух приведенных мне использовать?
Ответы
Ответ 1
Абстрактная фабрика предоставляет интерфейс для создания семейств, связанных между собой, или независимых объектов, конкретные классы которых неизвестны. Строитель отделяет конструирование сложного объекта от его представления, позволяя использовать один и тот же процесс конструирования для создания различных представлений Основное различие между ними в том, что строитель делает акцент на пошаговом конструировании объекта, а абстрактная фабрика на создании семейств объектов. Строитель возвращает объект на последнем шаге, тогда как с точки зрения абстрактной фабрики продукт возвращается немедленно.Ответ 2
Если на конкретных примерах, паттерн Строитель - SqlConnectionStringBuilder В них вы задаете параметры, хост, порт, авторизация, логин, пароль, потом вызываете метод ToString() И получаете конечный результат. С фабриками не так. Для инициализации вы вызываете не конструктор, а специальный фабричный метод абстрактного класса или родителя, который возвращает экземпляр нужного потомка. Например: WebRequest request = WebRequest.Create("http://localhost:8080"); вернет HttpWebRequest, а если вы вызовете с другим значением аргумента: WebRequest request = WebRequest.Create("ftp://localhost:21"); вернет FtpWebRequest.
Комментариев нет:
Отправить комментарий