2009-11-14 11 views

Antwort

11

Der Builder Muster wird viele Objekte angelegt, wobei das Flyweight Muster über teilen eine solche 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. Das Urbild Anwendungsfall für Flyweight ist, wo ein Pool von ein paar Dutzend Zeichen-Objekte werden immer in einem Texteditor Anwendung verwendet (dies ist das Beispiel in der "GoF" book gegeben) Muster

9

Direkt aus wikipedia.

Flyweight

Flyweight ist ein Software-Design Muster. Ein Fliehgewicht ist ein Objekt, das Speicherverbrauch minimiert, indem viel Daten wie möglich mit anderen ähnlichen Objekten teilen; es ist eine Möglichkeit, Objekte in großen Zahlen zu verwenden, wenn eine einfache wiederholte Darstellung würde eine inakzeptable Menge an Speicher verwenden.

Builder

Das Builder-Muster ist ein Software- Design-Muster. Die Absicht ist abstrakte Schritte der Konstruktion von Objekte, so dass verschiedene Implementierungen dieser Schritte können verschiedene Darstellungen von Objekte konstruieren.

Eine hilft beim Erstellen von Objekten und die andere hilft bei der Speichernutzung. Sie könnten möglicherweise einen Builder verwenden, um verschiedene Objekte mit einem Fliegengewicht zu erstellen.

2

Fliegengewicht ist angemessen, wenn „viele Objekte muss manipuliert werden, und diese können sich keine überflüssigen Daten leisten. " 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 zur Herstellung von Fliegengewicht ist die Kontrolle der Objekt Instanziierung mit einer Factory-Methode oder Builder-Design-Muster. 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 ähnelt dem Builder, 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).

Verwandte Themen