Zerlegbares Muster

In der Softwaretechnik ist das zerlegbare Muster ein Verteilen-Designmuster. Das zerlegbare Muster beschreibt, dass eine Gruppe von Gegenständen ebenso als ein einzelnes Beispiel eines Gegenstands behandelt werden soll. Die Absicht einer Zusammensetzung ist, Gegenstände in Baumstrukturen "zusammenzusetzen", um teilweise ganze Hierarchien zu vertreten. Das Einführen des zerlegbaren Musters lässt Kunden individuelle Gegenstände und Zusammensetzungen gleichförmig behandeln.

Motivation

Wenn, sich mit baumstrukturierten Daten befassend, Programmierer häufig zwischen einem Blatt-Knoten und einem Zweig unterscheiden müssen. Das macht Code komplizierter, und deshalb, anfälliger Fehler. Die Lösung ist eine Schnittstelle, die erlaubt, komplizierte und primitive Gegenstände gleichförmig zu behandeln. In der objektorientierten Programmierung ist eine Zusammensetzung ein Gegenstand entworfen als eine Zusammensetzung von one-more ähnlichen Gegenständen, der ganzen ausstellenden ähnlichen Funktionalität. Das ist bekannt, wie "-eine" Beziehung zwischen Gegenständen hat. Das Schlüsselkonzept ist, dass Sie ein einzelnes Beispiel des Gegenstands manipulieren können, wie Sie eine Gruppe von ihnen manipulieren würden. Die Operationen, die Sie auf allen zerlegbaren Gegenständen häufig durchführen können, haben kleinste Beziehung des gemeinsamen Nenners. Zum Beispiel, wenn man ein System definiert, um gruppierte Gestalten auf einem Schirm zu porträtieren, würde es nützlich sein zu definieren eine Gruppe von Gestalten in der Größe anzupassen, um dieselbe Wirkung (in einem Sinn) zu haben, als, eine einzelne Gestalt in der Größe anzupassen.

Wenn man verwendet

Zusammensetzung kann verwendet werden, wenn Kunden den Unterschied zwischen Zusammensetzungen von Gegenständen und individuellen Gegenständen ignorieren sollten. Wenn Programmierer finden, dass sie vielfache Gegenstände ebenso verwenden, und häufig fast identischen Code haben, um jeden von ihnen zu behandeln, dann ist Zusammensetzung eine gute Wahl; es ist in dieser Situation weniger kompliziert, um Primitive und Zusammensetzungen als homogen zu behandeln.

Struktur

Bestandteil

  • ist die Abstraktion für alle Bestandteile, einschließlich zerlegbarer
  • erklärt die Schnittstelle für Gegenstände in der Zusammensetzung
  • (fakultativ) definiert eine Schnittstelle, für auf einen Elternteil eines Bestandteils in der rekursiven Struktur zuzugreifen, und führt es durch, wenn es passender ist

Blatt

  • vertritt Blatt-Gegenstände in der Zusammensetzung.
  • Werkzeuge alle Teilmethoden

Zusammensetzung

  • vertritt einen zerlegbaren Bestandteil (Bestandteil, der Kinder hat)
  • Werkzeug-Methoden, Kinder zu manipulieren
  • Werkzeuge alle Teilmethoden, allgemein durch das Beauftragen von ihnen an seine Kinder

Schwankung

Wie es in Designmustern beschrieben wird, schließt das Muster auch einschließlich der Kindermanipulationsmethoden in die Hauptteilschnittstelle, nicht nur die Zerlegbare Unterklasse ein. Neuere Beschreibungen lassen manchmal diese Methoden weg.

Beispiel

Das folgende Beispiel, das in Java geschrieben ist, führt eine grafische Klasse durch, die entweder eine Ellipse oder eine Zusammensetzung von mehrerer Grafik sein kann. Jede Grafik kann gedruckt werden. In der algebraischen Form,

Grafisch = Ellipse | GraphicList

GraphicList = leer | Grafischer GraphicList

Es konnte erweitert werden, um mehrere andere Gestalten durchzuführen (Rechteck, usw.) und Methoden (übersetzen Sie usw.).

Import java.util. Liste;

Import java.util. ArrayList;

/ ** "Bestandteil" * /

verbinden Sie Grafischen {\

//Druckt die Grafik.

öffentlicher leerer Druck ;

}\

/ ** "Zusammensetzung" * /

Klasse CompositeGraphic führt Grafischen {\durch

//Sammlung der Kindergrafik.

private Liste

//Druckt die Grafik.

öffentlicher leerer Druck {\

für (Grafische Grafik: mChildGraphics) {\

graphic.print ;

}\ }\

//Trägt die Grafik zur Zusammensetzung bei.

öffentliche Leere fügt (Grafische Grafik) {\hinzu

(grafischer) mChildGraphics.add;

}\

//Entfernt die Grafik von der Zusammensetzung.

öffentliche Leere entfernt (Grafische Grafik) {\

(grafischer) mChildGraphics.remove;

}\}\

/ ** "Blatt" * /

Klassenellipse führt Grafischen {\durch

//Druckt die Grafik. öffentlicher leerer Druck {\

System.out.println ("Ellipse");

}\}\

/ ** Kunde * /

öffentliches Klassenprogramm {\

öffentliche statische leere Hauptsache (Schnur [] args) {\

//Initialisieren Sie vier Ellipsen

Ellipse ellipse1 = neue Ellipse ;

Ellipse ellipse2 = neue Ellipse ;

Ellipse ellipse3 = neue Ellipse ;

Ellipse ellipse4 = neue Ellipse ;

//Initialisieren Sie drei zerlegbare Grafik

CompositeGraphic grafisch = neuer CompositeGraphic ;

CompositeGraphic graphic1 = neuer CompositeGraphic ;

CompositeGraphic graphic2 = neuer CompositeGraphic ;

//Setzt die Grafik zusammen

graphic1.add (ellipse1);

graphic1.add (ellipse2);

graphic1.add (ellipse3);

graphic2.add (ellipse4);

graphic.add (graphic1);

graphic.add (graphic2);

//Druckt die ganze Grafik (viermal die Schnur "Ellipse").

graphic.print ;

}\}\</Quelle>

Siehe auch

  • Perl Designmuster-Buch
  • Mixin
  • Gesetz von Demeter

Außenverbindungen


Prototyp-Muster / Raumausstatter-Muster
Impressum & Datenschutz