首页 > 编程 > Java > 正文

java组合模式

2019-11-10 20:12:34
字体:
来源:转载
供稿:网友
import java.util.ArrayList;import java.util.List;/** * Created by yushuang3 on 17/2/8. */public class TestComposePattern { public static void main(String [] args){ Component c = new Composite("根节点"); Component child = new Composite("一级节点child"); Component child_1 = new Leaf("一级节点child之子节点1"); Component child_2 = new Leaf("一级节点child之子节点2"); child.add(child_1); child.add(child_2); c.add(child); Component leaf = new Leaf("一级节点之叶子节点"); c.add(leaf); Component child2 = new Composite("一级节点child2"); c.add(child2); c.foreach(); }}abstract class Component { String name; public Component(String name) { this.name = name; } public abstract void add(Component c); public abstract void remove(Component c); public abstract void foreach();}class Composite extends Component { PRivate List<Component> child= new ArrayList<Component>(); public Composite(String name){ super(name); } @Override public void add(Component c){ child.add(c); } @Override public void remove(Component c){ child.remove(c); } @Override public void foreach() { System.out.println("节点名:" + name); for(Component c : child){ c.foreach(); } }}class Leaf extends Component { public Leaf(String name){ super(name); } @Override public void add(Component c){ } @Override public void remove(Component c){ } @Override public void foreach(){ System.out.println("tself name-->"+this.name); }}

总结: 什么情况下使用组合模式: 引用大话设计模式的片段:“当发现需求中是体现部分与整体层次结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了。”

转自: 《java与模式》之组合模式


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