Абстрактная фабрика в сравнении с образцом моста - PullRequest
10 голосов
/ 09 октября 2011

Я только что выучил шаблон Bridge и его намерение: Отсоедините абстракцию от его реализации, чтобы они могли независимо варьироваться .

Но почему просто AbstractFactory не может сделать то же самое?

Я знаю, что AbstractFactory может создать конкретный мост, но мой вопрос касается использования AbstractFactory вместо Bridge для отделения абстракции и реализации.

Не могли бы вы объяснить мне реальную разницу между AbstractFactory и Bridge Pattern?

Ответы [ 3 ]

4 голосов
/ 09 октября 2011

Во-первых, из того, что я читал, больше напоминает шаблон моста, когда и класс, и то, что он делает, часто меняется.Сам класс можно рассматривать как реализацию, а поведение класса - как абстракцию.

С другой стороны, Абстрактная фабрика предоставляет интерфейс для создания групп связанных или зависимых объектов без указания их конкретных классов;их реализация касается.

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

Для меня операции подразумевают методы в java, поэтому операции определяются или объявляются абстракцией, но реализуются в самом классе.Так что да, абстракция просто объявляет, что операции могут делать с поведением, но фактические реализации выполняются в классе.Кроме того, абстрактная фабрика также правильна.

Я полагаю, что определяющей частью для моста является то, что он может иметь наборы абстракций, которые варьируются в зависимости от одной абстракции.ссылаются на класс, который опирается на набор абстрактных операций, где возможно несколько реализаций набора абстрактных операций.

См. Эти ссылки для получения дополнительной информации:

Использование абстракций и шаблона моста в Java

Википедия: Bridge_Pattern

Шаблон моста в Java

Шаблон проектирования моста

2 голосов
/ 28 января 2016

Есть несколько отличий, и мы не можем сравнить их обоих.

  1. Абстрактная фабрика - это шаблон творческого проектирования , который занимается созданием объектов. Мост - это шаблон структурного проектирования , который имеет дело со структурой и составом класса.

  2. В Мост , абстракция и реализациябудет меняться независимо.Но в абстрактной фабрике, если вы меняете абстракцию (интерфейс), вам нужно сменить клиента.

abstract_factory пример использования шаблона:

  1. Когда вашей системе необходимо создать несколько семейств продуктов или вы хотите предоставить библиотеку продуктов без раскрытия подробностей реализации.

Контрольный список:

  1. Решите, если "платформанезависимость »и услуги по созданию являются текущим источником боли.
  2. Составьте карту матрицы« платформы »и« продукты ».
  3. Определите фабричный интерфейс, который состоит из фабричного метода для продукта.
  4. Определите производный от фабрики класс для каждой платформы, которая инкапсулирует все ссылки на новый оператор.
  5. Клиент должен удалить все ссылки на новые и использовать фабричные методы для создания объектов продукта.

мост шаблон:

Используйте его, когда:

  1. требуется привязка реализации во время выполнения,
  2. у вас есть распространение классов из связанного интерфейса и многочисленные реализации,
  3. вы хотите разделить реализацию между несколькими объектами,
  4. вам нужно отобразить иерархии ортогональных классов.

Связанные вопросы SE:

Разъединяет ли паттерн моста абстракцию от реализации?

В чем основное отличие Factory?и абстрактные фабричные шаблоны?

Посмотрите эту статью journaldev и статью sourcemaking для более глубокого понимания различных шаблонов проектирования.

1 голос
/ 05 августа 2015

Да.Они подобны.AF используется для создания семейств объектов.В то время как Bridge больше относится к поведению и также допускает слабую связь между алгоритмом и платформой.

Например: предположим, что мы разрабатываем программу для диагностики сети с использованием Ping и Traceroute, команды на разных платформах различны.Абстрактная фабрика может использоваться для получения экземпляра ping или traceroute для любой из платформ.Это не заканчивается там.Bridge позволяет нам разрабатывать алгоритм более высокого уровня, используя команды ping и trace, возвращаемые AF.Алгоритм, который может использовать различную последовательность ping и traceroute, в зависимости от платформы, может быть абстрагирован от деталей реализации конкретной платформы с использованием шаблона моста.

...