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

结构型设计模式

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();

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容