组合模式
来源:互联网 发布:电脑摄像头全屏软件 编辑:程序博客网 时间:2024/06/05 04:22
组合模式(Composite Pattern),属于结构型模式,组合模式组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(叶子对象)和组合对象(组合对象)具有一致性(统一的接口),在调用时可以忽略复杂的层次结构,使用统一的方式去操作层次结构中的所有对象。使程序能够与复杂元素的内部结构解耦。
下面是一个操作文件夹的demo:
文件结构:
文件接口:
public abstract class File { String name; public File(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void display();}
不同类型的文件:
public class ImageFile extends File { public ImageFile(String name) { super(name); } @Override public void display() { System.out.println(super.getName()); }}public class TextFile extends File { public TextFile(String name) { super(name); } @Override public void display() { System.out.println(super.getName()); }}
实现了文件接口的文件夹:
public class Folder extends File { private List<File> fileList; public Folder(String name) { super(name); fileList = new ArrayList<>(); } @Override public void display() { // 显示每一个文件 for (File file : fileList) { file.display(); } } public void add(File file) { fileList.add(file); } public void remove(File file) { fileList.remove(file); }}
调用:
// 新建文件、文件夹ImageFile image1 = new ImageFile("图片文件1");ImageFile image2 = new ImageFile("图片文件2");TextFile textFile = new TextFile("文本文件1");Folder homeFolder = new Folder("主目录");Folder imageFolder = new Folder("图片目录");// 设置层次结构imageFolder.add(image1);imageFolder.add(image2);homeFolder.add(textFile);homeFolder.add(imageFolder);// 文本文件的显示textFile.display(); // 文件夹的显示homeFolder.display();
输出结果:
文本文件1文本文件1图片文件1图片文件2
优点 : 可以清楚地定义分层次的复杂对象,增加新部件也更容易。调用简单,组合结构和单个对象的调用方法一致。
阅读全文
1 0
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- iptables匹配条件总结1
- CentOS6.9下软件实现RAID5创建
- 漫谈千亿级数据优化实践:一次数据优化实录
- 解释为何 remote()->transact可以直接调用->transact?
- 使用Fiddler进行抓包<二>
- 组合模式
- Lua的函数参数为table时奇特现象
- 【0010】mysql修改root密码4种方法
- ROM 、RAM和FLASH 的区别
- 新闻客户端
- sqlit3相关知识点(2)
- 进度条的制作
- JavaWeb开发笔记(2017年)
- Android自定义控件开发系列——仿支付宝六位支付密码输入