Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Informationen

How To's Algorithmen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

Composite

Das Design-Pattern Composite abstrahiert Datenstrukturen um einzelne Objekte zu Baumstrukturen zusammenzusetzten.

Bestandteile einer Komponente

  • Ein (oft abstrakte) Basisklasse (Component)
    • Repräsentiert elementare und zusammengesetzte Objekte (Container)
    • Stellt einheitliche Schnittstelle für elementare Objekte und Container zur Verfügung
  • Elementare Objekte (von der Basisklasse abgeleitet)
  • Containerklasse(n), die die Menge von Objekten der Basisklasse aufnehmen

Beispiel

Composite.java
  1. class MenuEntry
  2. {
  3.         protected String name;
  4.         public MenuEntry(String name) {
  5.                 this.name = name;
  6.         }
  7.         public String toString() {
  8.                 return name;
  9.         }
  10. }
  11.  
  12. public class Menu extends MenuEntry
  13. {
  14.         MenuEntry[] ent;
  15.         int entryCnt;
  16.         public Menu(String name, int maxElements) {
  17.                 super(name);
  18.                 this.ent = new MenuEntry[maxElements];
  19.                 entryCnt = 0;
  20.         }
  21.         public void add(MenuEntry entry) {
  22.                 ent[entryCnt++] = entry;
  23.         }
  24.         public String toString() {
  25.                 String ret = “(“;
  26.                 for(int i=0; i<entryCnt; ++i) {
  27.                         ret+=(i!=0 ?“,“ : ““)+ent[i].toString();
  28.                 }
  29.                 return ret + “)“;
  30.         }
  31. }
  32.  
  33. public class Composite
  34. {
  35.         public static void main(String[] args)
  36.         {
  37.                 Menu filemenu = new Menu(“Datei“,5);
  38.                 filemenu.add(new MenuEntry(“Neu“));
  39.                 filemenu.add(new MenuEntry(“Laden“));
  40.                 filemenu.add(new MenuEntry(“Speichern“));
  41.                 Menu confmenu = new Menu(“Konfig“,3);
  42.                 confmenu.add(new MenuEntry(“Farben“));
  43.                 confmenu.add(new MenuEntry(“Fenster“));
  44.                 confmenu.add(new MenuEntry(“Pfade“));
  45.                 filemenu.add(confmenu);
  46.                 filemenu.add(new MenuEntry(“Beenden“));
  47.                 System.out.println(filemenu);
  48.         }
  49. }

Verwandte Links

Zuletzt geändert am 30.09.2006 20:18 Uhr
  Impressum