结构型设计模式
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();
}
}