http://sourcemaking.com/design_patterns/composite/java/2

nterface Component { void traverse(); }      // 1. "lowest common denominator" 

class Primitive implements Component {        // 2. "Isa" relationship
   private int value;
   public Primitive( int val ) { value = val; }
   public void traverse()      { System.out.print( value + "  " ); }
}

abstract class Composite implements Component {      // 2. "Isa" relationship
   private Component[] children = new Component[9];  // 3. Couple to interface
   private int         total    = 0;
   private int         value;
   public Composite( int val )    { value = val; }
   public void add( Component c ) { children[total++] = c; } // 3. Couple to
   public void traverse() {                                  //    interface
      System.out.print( value + "  " );
      for (int i=0; i < total; i++)
          children[i].traverse();            // 4. Delegation and polymorphism 
}  }

class Row extends Composite {                // Two different kinds of "con-
   public Row( int val ) { super( val ); }   // tainer" classes.  Most of the
   public void traverse() {                  // "meat" is in the Composite
      System.out.print( "Row" );             // base class.
      super.traverse();
}  }

class Column extends Composite {
   public Column( int val ) { super( val ); }
   public void traverse() {
      System.out.print( "Col" );
      super.traverse();
}  }

public class CompositeDemo {
   public static void main( String[] args ) {
      Composite first  = new Row( 1 );          // Row1
      Composite second = new Column( 2 );       //   |
      Composite third  = new Column( 3 );       //   +-- Col2
      Composite fourth = new Row( 4 );          //   |     |
      Composite fifth  = new Row( 5 );          //   |     +-- 7
      first.add( second );                      //   +-- Col3
      first.add( third  );                      //   |     |
      third.add( fourth );                      //   |     +-- Row4
      third.add( fifth  );                      //   |     |     |
      first.add(  new Primitive( 6 ) );         //   |     |     +-- 9
      second.add( new Primitive( 7 ) );         //   |     +-- Row5
      third.add(  new Primitive( 8 ) );         //   |     |     |
      fourth.add( new Primitive( 9 ) );         //   |     |     +-- 10
      fifth.add(  new Primitive(10 ) );         //   |     +-- 8
      first.traverse();                         //   +-- 6
}  }

Row1 Col2 7 Col3 Row4 9 Row5 10 8 6 

你可能感兴趣的:(java,C++,c,C#)