java设计模式_组合模式
来源:互联网 发布:淘宝卖家上传视频教程 编辑:程序博客网 时间:2024/05/21 10:59
一、什么是组合模式
Composite模式也叫组合模式,是构造型的设 计模式之一。通过递归手段来构造树形的对象结 构,并可以通过一个对象来访问整个对象树。
二、组合模式的结构
三、组合模式的角色和职责
Component (树形结构的节点抽象)
- 为所有的对象定义统一的接口(公共属性,行为等的定义)
- 提供管理子节点对象的接口方法
- [可选]提供管理父节点对象的接口方法Leaf (树形结构的叶节点) Component的实现子类
Composite(树形结构的枝节点) Component的实现子类
//示例1:import java.util.List;public class File implements IFile { private String name; public File(String name) { this.name = name; } @Override public void display() { System.out.println(name); } @Override public boolean add(IFile file) { return false; } @Override public boolean remove(IFile file) { return false; } @Override public List<IFile> getChild() { return null; }}import java.util.ArrayList;import java.util.List;public class Folder implements IFile { private String name; private List<IFile> children; public Folder(String name) { this.name = name; children = new ArrayList<>(); } @Override public void display() { System.out.println(name); } @Override public boolean add(IFile file) { return children.add(file); } @Override public boolean remove(IFile file) { return children.remove(file); } @Override public List<IFile> getChild() { return children; }}import java.util.List;public class MainClass { public static void main(String[] args) { //C盘 Folder rootFolder = new Folder("C:"); //demo目录 Folder demoFolder = new Folder("demo"); //demo.txt文件 File demoFile = new File("demo.txt"); rootFolder.add(demoFolder); demoFolder.add(demoFile); //demo目录下 Folder demoTest = new Folder("demoTest"); File demoTestFile = new File("demoTestFile.txt"); demoFolder.add(demoTest); demoTest.add(demoTestFile); displayTree(rootFolder,0);//c: } public static void displayTree(IFile rootFolder,int deep) { for(int i = 0;i < deep; i++){ System.out.print("--"); } //显示自身的名称 rootFolder.display(); //获得子树 List<IFile> children = rootFolder.getChild(); for(IFile file : children) { if(file instanceof File) { for(int i = 0;i <= deep; i++){ System.out.print("--"); } file.display(); } else { displayTree(file , deep + 1); } } }}/*C:--demo----demo.txt----demoTest------demoTestFile.txt*/
0 0
- java设计模式_组合模式
- 设计模式_组合模式(Java)
- java设计模式10_组合模式
- Java 设计模式_组合模式
- 设计模式_组合模式
- 设计模式_组合模式
- Java设计模式_(结构型)_组合模式
- 大话设计模式_组合模式
- (GOF23设计模式)_组合模式
- 设计模式之_组合模式(下)
- 设计模式_组合模式(14)
- JAVA设计模式 -- 组合模式
- JAVA设计模式:组合模式
- Java 设计模式-组合模式
- java设计模式-组合模式
- Java设计模式--组合模式
- Java设计模式--组合模式
- Java设计模式----组合模式
- 怎么用干发帽有用吗
- 【7013】编程求一个后缀表达式的值
- 判断是否为素数
- linux--nginx安装-使用教程
- 广大盆友们,gjh又要出山写书了!!!
- java设计模式_组合模式
- 算法的简单概况
- BigDecimal除法后保留两位小数
- 暑期集训训练赛2(uva11210) 你会打麻将吗?
- BestCoder Round #85 <同余--贪心--单质数判断+枚举>
- <读书笔记> 代码整洁之道
- 学习总结
- BestCoder #85 A,B,C
- 懒加载