Я видел, как этот вопрос поднимался здесь и там несколько раз, но я не нашел и не ответил, что был доволен.
Из Википедии:
Builder фокусируется на построении сложного объекта шаг за шагом. Аннотация Factory подчеркивает семейство объектов продукта (простых или сложных). Builder возвращает продукт в качестве последнего шага, но в отношении абстрактного Factory продукт немедленно возвращается.
Но для клиента это не то же самое? Он получает полный объект после его создания, поэтому для него нет добавленной функциональности.
Единственный способ, которым я это вижу, - это как способ или организация кода конструктора пошагово, чтобы создать структуру для реализации строителей. Это хорошо, но едва ли отличный шаг от абстрактного factory.
Этот следующий бит из Википедии является хорошей ссылкой, чтобы перейти к моей точке:
Часто проекты начинаются с использования метода Factory (менее сложные, настраиваемые, подклассы размножаются) и развиваются в направлении Abstract Factory, Prototype или Builder (более гибкие, более сложные), поскольку разработчик обнаруживает, где больше гибкости необходимо.
Если это так, какая сложность должна быть введена в вашей системе, где вы бы изменились с абстрактного Factory на Builder?
Моя точка зрения заключается в том, что я не могу найти и пример, где ясно, что абстрактного Factory не будет достаточно, и вам понадобится Builder вместо этого.