首页 > 编程 > Java > 正文

Java 中组合模型之对象结构模式的详解

2019-11-26 11:26:38
字体:
来源:转载
供稿:网友

Java 中组合模型之对象结构模式的详解

一、意图

将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

二、适用性

你想表示对象的部分-整体层次结构

你希望用户忽略组合对象与单个对象的不同,用户将统一使用组合结构中的所有对象。

三、结构

四、代码

public abstract class Component {  protected String name; //节点名  public Component(String name){    this.name = name;  }  public abstract void doSomething();}
public class Composite extends Component {  /**   * 存储节点的容器   */  private List<Component> components = new ArrayList<>();  public Composite(String name) {    super(name);  }  @Override  public void doSomething() {    System.out.println(name);    if(null!=components){      for(Component c: components){        c.doSomething();      }    }  }  public void addChild(Component child){    components.add(child);  }  public void removeChild(Component child){    components.remove(child);  }  public Component getChildren(int index){    return components.get(index);  }}
public class Leaf extends Component {  public Leaf(String name) {    super(name);  }  @Override  public void doSomething() {    System.out.println(name);  }}
public class Client {  public static void main(String[] args){    // 构造一个根节点    Composite root = new Composite("Root");    // 构造两个枝干节点    Composite branch1 = new Composite("Branch1");    Composite branch2 = new Composite("Branch2");    // 构造两个叶子节点    Leaf leaf1 = new Leaf("Leaf1");    Leaf leaf2 = new Leaf("Leaf2");    branch1.addChild(leaf1);    branch2.addChild(leaf2);    root.addChild(branch1);    root.addChild(branch2);    root.doSomething();  }}输出结果:RootBranch1Leaf1Branch2Leaf2

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表