首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

design pattern——结合模式

2012-11-18 
design pattern——组合模式针对问题:组合模式使我们在处理树型结构的问题中,模糊了简单元素和复杂元素的概

design pattern——组合模式

针对问题:组合模式使我们在处理树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

?

?

?

?

组合模式结构图:

?



design pattern——结合模式

?

?

?

?

?

组合模式实现代码:

?

/** * 为树叶或树枝抽象一个接口 * @author bruce * */public abstract class Component {public abstract void operation();public void add(Component component){throw new UnsupportedOperationException();}public void remove(Component component){throw new UnsupportedOperationException();}public Component getChild(int index){throw new UnsupportedOperationException();}}/** * 树叶 * @author bruce * */public class Leaf extends Component{private String name;public Leaf(String name){this.name=name;}@Overridepublic void operation() {// TODO Auto-generated method stubSystem.out.println(name);}}/** * 树枝 * @author bruce * */public class Composite extends Component{private List<Component> list=new ArrayList<Component>();private String name;public Composite(String name){this.name=name;}@Overridepublic void operation() {// TODO Auto-generated method stubSystem.out.println(name);/** *  for..each 递归调用operation() */Iterator<Component> iterator=list.iterator();while(iterator.hasNext()){Component component=iterator.next();component.operation();}}@Overridepublic void add(Component component) {// TODO Auto-generated method stublist.add(component);}@Overridepublic void remove(Component component) {// TODO Auto-generated method stublist.remove(component);}@Overridepublic Component getChild(int index) {// TODO Auto-generated method stubreturn list.get(index);}}/** * 测试 * @author bruce * */public class Client {public static void main(String[] args) {Component c=new Composite("C:/");Component cl=new Leaf("test.java");Component cc=new Composite("C:/program file/");Component cclA=new Leaf("QQ.exe");Component cclB=new Leaf("360.exe");cc.add(cclA);cc.add(cclB);c.add(cl);c.add(cc);c.operation();/** * output: *     C:/test.javaC:/program file/QQ.exe360.exe */}}


?

?

热点排行