|
   
« | October 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | |
|
blog信息 |
blog名称: 日志总数:17 评论数量:101 留言数量:-1 访问次数:123596 建立时间:2005年4月19日 | |
|
|
设计模式之Composite(组合) |
参照该模式写的源码例子
package myprojects.composite;import java.io.*;import java.util.*;import java.util.ArrayList;
abstract class mybase{ public String name; public Iterator iter() { return null; } public mybase(String name){ this.name=name; } public void print() { System.out.println( "mybase"+name + " print called"); } public boolean add(mybase thismybase) { return false; } }class Composite extends mybase{ private int i=0; private ArrayList equipment=new ArrayList(); public Composite(String name){super(name);} public boolean add(mybase equipment) { this.equipment.add(equipment); return true; } public void print() { System.out.println( name + " print called"); Iterator iter=equipment.iterator(); while(iter.hasNext()) { ((mybase)iter.next()).print(); }
}
}
class Chassis extends Composite{public Chassis(String name) { super(name); }//System.out.println( "Chassis"+ name + " print called");//super.print();//}} class Cabinet extends Composite{public Cabinet(String name) { super(name); }//public void print(){//System.out.println( "Cabinet"+ name + " print called");//super.print();//}}class mydisk extends mybase{public mydisk(String name){super(name);}public void print(){System.out.println( "mydisk"+ name + " print called");}} public class Disk{ public static void main(String arg[]) { Chassis chassis=new Chassis("chassis"); Cabinet cabinet=new Cabinet("cabinet"); mydisk md=new mydisk("mydisk"); chassis.add(md); chassis.add(md); chassis.add(md); chassis.add(md); cabinet.add(chassis); Composite com =new Composite("com"); com.add(cabinet); com.add(cabinet); com.print(); } }
转载自: http://www.jdon.com/designpatterns/composite.htm | |
|
| |