|
package liu.composite.demo;
public abstract class Component {
public String name;
public Component(String name){ this.name = name; } public Component(){ } public abstract void add(Component c); public abstract void remove(Component c); public abstract void display(int depth); } ----------------------------- package liu.composite.demo; import java.util.ArrayList;
import java.util.Iterator; import java.util.List; public class Composite extends Component {
public Composite(String name){
super(name); } private List<Component> children = new ArrayList<Component>(); @Override public void add(Component c) { children.add(c); } @Override
public void remove(Component c) { children.remove(c); } @Override
public void display(int depth) { for(int i = 0 ;i<depth;i++) System.out.print("-"); System.out.println(name); for(Iterator tmp = children.iterator();tmp.hasNext();){ ((Component) tmp.next()).display(depth+2); //System.out.println(); } } }
--------------------------- package liu.composite.demo; public class Leaf extends Component {
public Leaf(String name){
super(name); } @Override public void add(Component c) { System.out.println("can not add to a leaf"); } @Override
public void remove(Component c) { System.out.println("can remove from a leaf"); } @Override
public void display(int depth) { for(int i = 0 ;i<depth;i++) System.out.print("-"); System.out.println(name); } }
---------------------------------- package liu.composite.demo; public class Main {
public static void main(String[] args) {
Composite root = new Composite("root"); root.add(new Leaf("Leaf A")); root.add(new Leaf("Leaf B")); Composite comp = new Composite("Composite x");
comp.add(new Leaf("Leaf XA")); comp.add(new Leaf("Leaf XB")); root.add(comp); Composite comp2 = new Composite("Composite xy"); comp2.add(new Leaf("Leaf XYA")); comp2.add(new Leaf("Leaf XYB")); comp.add(comp2); root.add(new Leaf("Leaf C")); Leaf leaf = new Leaf("Leaf D"); root.add(leaf); root.remove(leaf); root.display(1); } }
![]() |
设计模式之组合模式,component
最新推荐文章于 2025-03-10 09:16:07 发布
本文通过Java代码展示了复合模式(Composite Pattern)的概念和实现,包括组件(Component)、组合(Composite)和叶子(Leaf)类的功能及相互作用。通过实例演示了如何使用组合模式构建灵活的层次结构。


5155

被折叠的 条评论
为什么被折叠?



