建设单位适合去哪个网站看资料,上海网站建设方案,深圳福田网站制作公司,网站公司建设网站首页组合模式 组合模式定义使用场景1、文件系统的目录结构#xff1a;2、组织架构图#xff1a;3、菜单和菜单项#xff1a;4、使用场景总结#xff1a; 角色定义Component 抽象构件角色:Leaf 叶子构件:Composite 树枝构件: 需求背景代码实现Component#xff08;抽象构件角色… 组合模式 组合模式定义使用场景1、文件系统的目录结构2、组织架构图3、菜单和菜单项4、使用场景总结 角色定义Component 抽象构件角色:Leaf 叶子构件:Composite 树枝构件: 需求背景代码实现Component抽象构件角色Leaf叶子构件Composite树枝构件测试案例输出结果案例总结 组合模式定义
将对象组合成树形结构以表示“部分-整体”的层次结构使得用户对单个对象和组合对象的使用具有一致性。使用场景
以下是一些组合模式在生活中的案例
1、文件系统的目录结构
文件系统中的目录结构可以看作是一个树形结构每个目录可以包含文件和子目录。这个例子中目录就是复合对象而文件就是单个对象。
2、组织架构图
组织架构图也可以看作是一个树形结构每个部门可以包括多个员工和子部门。这个例子中部门就是复合对象而员工就是单个对象。
3、菜单和菜单项
在餐厅中菜单可以包含多个菜单项而每个菜单项可以是单个菜品或者是一个子菜单。这个例子中菜单就是复合对象而菜单项就是单个对象。
4、使用场景总结 维护和展示部分-整体关系的场景如树形菜单、文件和文件夹管理从一个整体中能够独立出部分模块或功能的场景。只要是树形结构就考虑使用组合模式 角色定义
Component 抽象构件角色: 定义参加组合对象的共有方法和属性可以定义一些默认的行为或属性.Leaf 叶子构件:
叶子对象其下再也没有其他的分支也就是遍历的最小单位。Composite 树枝构件:
树枝对象它的作用是组合树枝节点和叶子节点形成一个树形结构需求背景
使用组合模式实现对文件和文件夹的管理使用组合模式实现对文件和文件夹的管理
代码实现
Component抽象构件角色
public 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叶子构件
public class File extends Component {public File(String name) {super(name);}public void add(Component c) {System.out.println(不能添加文件到文件);}public void remove(Component c) {System.out.println(不能从文件中删除文件);}public void display(int depth) {for (int i 0; i depth; i) {System.out.print(-);}System.out.println(name);}
}Composite树枝构件
import java.util.ArrayList;
import java.util.List;public class Folder extends Component {private ListComponent children;public Folder(String name) {super(name);children new ArrayList();}public void add(Component c) {children.add(c);}public void remove(Component c) {children.remove(c);}public void display(int depth) {for (int i 0; i depth; i) {System.out.print(-);}System.out.println(name);for (Component c : children) {c.display(depth 2);}}
}测试案例
public class Test {public static void main(String[] args) {Component root new Folder(C:);Component folder1 new Folder(Program Files);Component folder2 new Folder(Users);Component file1 new File(readme.txt);Component file2 new File(program.exe);root.add(folder1);root.add(folder2);folder1.add(file2);folder2.add(file1);root.display(0);}
}输出结果
C:-Program Files--program.exe-Users--readme.txt案例总结 组合模式可以很好地管理树形结构它将复杂的结构分解成了一个个简单的对象从而使得代码更加简洁和易于维护。在实现过程中我们需要定义抽象构件角色、叶子构件和树枝构件其中叶子构件表示最基本的对象而树枝构件表示复合对象。在客户端中我们可以通过组合叶子和树枝构件来构建复杂的结构并且可以通过抽象构件角色来实现对所有对象的统一管理。