Ваш конкретный пример использования повлияет на то, какой (если любой) вы можете выбрать. Но в основном повторить, что находится на ссылке, которую вы ссылаетесь:
Оба абстрактных фабричных и заводских метода создают экземпляры неизвестных типов. Обычно они возвращают класс, соответствующий интерфейсу, но вы не знаете (и не должны заботиться) о том, каков будет конкретный тип. Чтобы использовать изображение из этой ссылки, используется WindowsFactory, что означает, что абстрактная фабрика возвращает экземпляр, совместимый с Windows. Если ваша фабрика была вместо LinuxFactory, вы можете получить обратно объект, который работает в Linux. Обратите также внимание на то, что вы, вероятно, не знали бы, есть ли у вас LinuxFactory или WindowsFactory, просто у вас была фабрика определенного типа.
Таким образом, фабрика абстрактных фабрик & - это методы построения полиморфных типов (в том числе, когда вы не знаете или не заботитесь о конкретном типе). Однако вызов для получения экземпляра типа обычно тривиален. Для того, чтобы построить с завода, вы, вероятно, просто звоните:
MyInterfaceType myInstance = myFactory.getTheItemOfMyInterfaceType();
Застройщик картины больше о создании сложных объектов, которые могут или не могут быть (но, вероятно, являются) известным типа. В этом случае вы ожидаете сложную серию вызовов для построения типа, часто устанавливая один параметр за другим. Поскольку существует множество известных параметров и аргументов, вы обычно знаете, какой тип объекта вы собираетесь получить от него (не обязательно, но это скорее, чем с абстрактной фабрикой). Builder используется, когда построение объекта является сложным, но не обязательно полиморфным (оно может быть полиморфным, но это не предпосылка шаблона). Строитель вызов построить что-то может быть (см Android AlertDialog для некоторых реальных примеров):
Builder b = new Builder();
b.setSomeValueA(myChoiceForA);
b.setSomeValueB(myChoiceForB);
MyInterfaceType myInstance = b.build();
Надежда, что помогает.
Строители допускают кусочки предметов, например, * вы * решаете, какие поля установлены. Это может быть или не быть хорошей идеей; это зависит от бизнес-требований. –