Was ist der Unterschied zwischen Builder Pattern und Flyweight Pattern?

8

Was ist der Unterschied zwischen Builder Pattern und Flyweight Pattern in Bezug auf die Verwendung, da beide mit einer großen Anzahl von Objekten umgehen?

    
why 14.11.2009, 05:29
quelle

3 Antworten

11

Das Builder-Muster wird für zum Erstellen vieler Objekte verwendet, wobei das Flyweight-Muster über teilen verfügt Sammlung von Objekten.

Diese beiden Muster behandeln beide "Verbundwerkstoffe", d. h. Objekte, die mehrere Elemente haben können, aber sie müssen überhaupt nicht zusammen verwendet werden. Der Archetyp Anwendungsfall für Flyweight ist, wo ein Pool von ein paar Dutzend Zeichenobjekte in einer Texteditoranwendung immer wieder verwendet wird (dies ist das Beispiel in "GoF "Buch )

    
mjv 14.11.2009, 05:39
quelle
9

Direkt aus Wikipedia.

Fliegengewicht

  

Fliegengewicht ist ein Software-Design   Muster. Ein Fliegengewicht ist ein Objekt, das   minimiert den Speicherverbrauch durch Teilen als   viel Daten wie möglich mit anderen   ähnliche Objekte; es ist ein Weg zu benutzen   Objekte in großen Zahlen, wenn eine einfache   wiederholte Darstellung würde ein verwenden   inakzeptable Menge an Speicher.

Builder

  

Das Builder-Muster ist eine Software   Design-Muster. Die Absicht ist es   abstrakte Konstruktionsschritte von   Objekte so unterschiedlich   Implementierungen dieser Schritte können   konstruiere verschiedene Darstellungen von   Objekte.

Einer hilft beim Erstellen von Objekten und der andere hilft bei der Speichernutzung. Du könntest möglicherweise einen Builder verwenden, um verschiedene Fliegengewichtobjekte zu "bauen".

    
bytebender 14.11.2009 05:38
quelle
2

Fliegengewicht Muster ist angemessen, wenn "viele Objekte manipuliert werden müssen und diese sich nicht leisten können, überflüssige Daten zu haben." In Java werden String-Objekte als Flyweight verwaltet. Java setzt alle festen String-Literale in einen Literal-Pool. Bei redundanten Literalen behält Java nur eine Kopie im Pool.

Der Schlüssel zum Fliegenfliegen ist die Steuerung der Objektinstanziierung mithilfe einer Factory-Methode oder eines Builder-Entwurfsmusters. Die Aufgabe einer Factory-Methode besteht einfach darin, Objekte zu erstellen: Geben Sie bei Eingabe-Kriterien ein Objekt des entsprechenden Typs zurück.

Abstract factory ist dem Builder ähnlich, da es auch komplexe Objekte konstruieren kann. Der Hauptunterschied besteht darin, dass das Builder-Muster sich darauf konzentriert, ein komplexes Objekt Schritt für Schritt aufzubauen. Der Schwerpunkt von Abstract Factor liegt auf Familien von Produktobjekten (entweder einfach oder komplex).

    
Sudhakar Kalmari 13.04.2010 17:45
quelle