美文网首页
设计模式-组合模式(十二)

设计模式-组合模式(十二)

作者: crazyydevil | 来源:发表于2018-05-11 11:47 被阅读0次

结构型设计模式

12.组合模式

组合模式又称“整体-部分”设计模式,让整体与部分的使用具有一致性。

12.1创建抽象类,所有的节点都继承该抽象类

public abstract class Component {

String name;ArrayListlist = new ArrayList<>();

abstract public void add(Component c);

abstract public void delete(Component c);

abstract public Component getIndex(int index);

abstract public ArrayList getList();

abstract public void desc();

}

12.2新建叶子节点并继承抽象类

public class Leaf extends Component {

@Overridepublic void add(Component c) {

// TODO Auto-generated method stub}

@Overridepublic void delete(Component c) {

// TODO Auto-generated method stub}

@Overridepublic Component getIndex(int index) {

// TODO Auto-generated method stubreturn null;}

@Overridepublic ArrayList getList() {

// TODO Auto-generated method stub

return null;}

@Override

public void desc() {

// TODO Auto-generated method stub

System.out.println("desc=" + name);

}  }

12.3新建分支节点并继承抽象类

public class Composite extends Component

 {

@Overridepublic void add(Component c) {// TODO Auto-generated method stubthis.list.add(c);}

@Overridepublic void delete(Component c) {// TODO Auto-generated method stubthis.delete(c);}

@Overridepublic Component getIndex(int index) {// TODO Auto-generated method stubreturn this.getIndex(index);}

@Overridepublic ArrayList getList() {

// TODO Auto-generated method stub

return this.getList();

}

@Override

public void desc() {

// TODO Auto-generated method stub

for (Component component : this.list) {

component.desc();

}  }  }

12.4 demo测试类

public class Demo {

public static void main(String[] args) {

Component root = new Composite();

Component branch = new Composite();

Component leaf = new Leaf();

leaf.name = "叶子";

branch.add(leaf);

Component leaf2 = new Leaf();

leaf2.name = "叶子2";

branch.add(leaf2);

root.add(branch);

root.add(leaf);

root.desc();

}

}

相关文章

网友评论

      本文标题:设计模式-组合模式(十二)

      本文链接:https://www.haomeiwen.com/subject/walxdftx.html