В чем разница между шаблоном Builder Pattern и Flyweight Pattern? - PullRequest
8 голосов
/ 14 ноября 2009

В чем разница между Pattern Builder и Flyweight Pattern с точки зрения использования, поскольку оба они имеют дело с большим количеством объектов?

Ответы [ 3 ]

11 голосов
/ 14 ноября 2009

Шаблон Builder используется для создания многих объектов, при этом шаблон Flyweight составляет примерно , разделяющих такой набор объектов.

Оба эти паттерна имеют дело с «композитами», то есть объектами, которые могут иметь несколько элементов, но их вообще не нужно использовать вместе. Вариант использования архетипа для Flyweight - это когда пул из нескольких десятков символов объектов используется снова и снова в приложении текстового редактора (это пример, приведенный в книге "GoF" )

9 голосов
/ 14 ноября 2009

Прямо из Википедии.

Flyweight

Flyweight - это шаблон проектирования программного обеспечения.Flyweight - это объект, который минимизирует использование памяти, делясь как можно большим количеством данных с другими подобными объектами;Это способ использовать объекты в больших количествах, когда простое повторное представление будет использовать недопустимый объем памяти.

Builder

The BuilderШаблон это шаблон проектирования программного обеспечения.Намерение состоит в том, чтобы абстрагировать этапы построения объектов, чтобы различные реализации этих этапов могли создавать различные представления объектов.

Один помогает при создании объектов, а другой помогает с использованием памяти.Вы могли бы потенциально использовать конструктор для «сборки» различных объектов в полете.

2 голосов
/ 13 апреля 2010

образец веса в полете подходит, когда «многие объекты должны манипулироваться, и они не могут позволить себе иметь посторонние данные». В Java объекты String управляются как легковесные. Java помещает все фиксированные литералы String в пул литералов. Для избыточных литералов Java хранит только одну копию в пуле.

Ключом к созданию навесного веса является управление экземплярами объекта с использованием заводского метода или шаблона конструктора. Задача фабричного метода - просто создавать объекты: при заданных критериях ввода возвращать объект соответствующего типа.

Абстрактная фабрика похожа на конструктор в том, что она также может создавать сложные объекты. Основное отличие состоит в том, что шаблон Builder фокусируется на пошаговом построении сложного объекта. Акцент абстрактного фактора делается на семействах объектов товара (простых или сложных).

...