Java中组合模型之对象结构模式的实例分析

这篇文章主要介绍了Java 中组合模型之对象结构模式的详解的相关资料,希望通过本文能帮助到大家理解应用对象结构模型,需要的朋友可以参考下

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

以上就是Java中组合模型之对象结构模式的实例分析的详细内容,更多请关注其它相关文章!

选择自己所爱的,爱自己所选择的。

Java中组合模型之对象结构模式的实例分析

相关文章:

你感兴趣的文章:

标签云: