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

网友投稿 268 2023-04-07


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

branch1.addChild(leaf1);

branch2.addChild(leaf2);

root.addChild(branch1);

root.addChild(branch2);

root.doSomething();

}

}

输出结果:

Root

Branch1

Leaf1

Branch2

Leaf2

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java基础知识精选 你答对了几道?
下一篇:Vue2几种常见开局方式详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~