重庆福彩建站,滨江区高端网站建设,专注于网络推广及网站建设,营销型网站策划公司用途组合模式 (Component)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有唯一性。组合模式是一种结构型模式。结构图-组合模式结构图Component: 组合中的对象声明接口#xff0c;在适当的情况下#xff0c;实现所有类共…用途组合模式 (Component)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有唯一性。组合模式是一种结构型模式。结构图-组合模式结构图Component: 组合中的对象声明接口在适当的情况下实现所有类共有接口的默认行为。声明一个接口用于访问和管理 Component 的子部件。abstract class Component {protected String name;public Component(String name) {this.name name;}public abstract void Add(Component c);public abstract void Remove(Component c);public abstract void Display(int depth);}Leaf: 表示叶节点对象。叶子节点没有子节点。class Leaf extends Component {public Leaf(String name) {super(name);}Overridepublic void Add(Component c) {System.out.println(Can not add to a leaf);}Overridepublic void Remove(Component c) {System.out.println(Can not remove from a leaf);}Overridepublic void Display(int depth) {String temp ;for (int i 0; i temp -;System.out.println(temp name);}}Composite: 定义枝节点行为用来存储子部件在 Component 接口中实现与子部件相关的操作。例如 Add 和 Remove。class Composite extends Component {private List children new ArrayList();public Composite(String name) {super(name);}Overridepublic void Add(Component c) {children.add(c);}Overridepublic void Remove(Component c) {children.remove(c);}Overridepublic void Display(int depth) {String temp ;for (int i 0; i temp -;System.out.println(temp name);for (Component c : children) {c.Display(depth 2);}}}Client: 通过 Component 接口操作结构中的对象。public class CompositePattern {public static void main(String[] args) {Composite root new Composite(root);root.Add(new Leaf(Leaf A));root.Add(new Leaf(Leaf B));Composite compX new Composite(Composite X);compX.Add(new Leaf(Leaf XA));compX.Add(new Leaf(Leaf XB));root.Add(compX);Composite compXY new Composite(Composite XY);compXY.Add(new Leaf(Leaf XYA));compXY.Add(new Leaf(Leaf XYB));compX.Add(compXY);root.Display(1);}}应用场景1、想要表示对象的部分-整体层次结构。2、想要客户端忽略组合对象与单个对象的差异客户端将统一地使用组合结构中的所有对象。关于分级数据结构的一个普遍性的例子是你每次使用电脑时所遇到的:文件系统。文件系统由目录和文件组成。每个目录都可以装内容。目录的内容可以是文件也 可以是目录。按照这种方式计算机的文件系统就是以递归结构来组织的。如果你想要描述这样的数据结构那么你可以使用组合模式。要点组合模式定义由 Leaf 对象和 Composite 对象组成的类结构它使得客户端变得简单它使得添加或删除子部件变得很容易。推荐参考资料《大话设计模式》《HeadFirst设计模式》