设计模式之组合模式
来源:互联网 发布:nodejs 和 php 编辑:程序博客网 时间:2024/06/03 16:31
设计模式之组合模式
使用组合模式的场景:
把部分和整体的关系用树状结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象
核心:
- 抽象构件角色:定义了叶子和容器构件的共同点
- 叶子结点:无子节点
- 容器构件角色:有容器的特性,可以包含子节点,
组合模式怎么用
我们一病毒查杀为例,练习一下组合模式
public interface File { void kill();// 杀病毒}//叶子结点class ImageFile implements File { private String name; public ImageFile(String name) { super(); this.name = name; } @Override public void kill() { System.out.println("对图片:"+name+"进行查杀"); }}//叶子结点class TextFile implements File { private String name; public TextFile(String name) { super(); this.name = name; } @Override public void kill() { System.out.println("对文本:"+name+"进行查杀"); }}//叶子结点class VideoFile implements File { private String name; public VideoFile(String name) { super(); this.name = name; } @Override public void kill() { System.out.println("对音频:"+name+"进行查杀"); }}
package Composite;import java.util.ArrayList;import java.util.List;//容器构建public class Fildor implements File{ private List<File> list = new ArrayList<File>(); private String name; public Fildor(String name) { super(); this.name = name; } public void add(File e) { list.add(e); } public void remove(File e) { list.remove(e); } public void getFile(int index) { list.get(index); } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } @Override public void kill() { System.out.println("对文件夹"+name+"进行查杀"); for (File file : list) { file.kill(); } }}
package Composite;public class Client { public static void main(String[] args) { Fildor fildor = new Fildor("我的文件夹"); File file = new TextFile("我的笔记.txt"); File file2 = new VideoFile("我的录音.mp3"); File file3 = new ImageFile("我的照片.jpg"); fildor.add(file); fildor.add(file2); fildor.add(file3); fildor.kill(); }}
什么时候用组合模式
- 开发中的应用场景:
- 操作系统的资源管理器
- GUI的容器层次图
- XML文件的解析
- OA系统中,组织结构的处理
- junit单元测试框架
0 0
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之--组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之---组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之-------------组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式 之 组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- C++初学之路:const
- 题目1174:查找第K小数
- 文字换行取消行间距
- WARN : Request method 'DELETE' not supported
- 博客开张,欢迎指教!交流J2EE架构、GIS空间分析、数据库集群设计、大数据与NOSQL
- 设计模式之组合模式
- jsp中的局部变量
- RecyclerView和ListView子控件缓存要点
- panda包的使用
- 关于Qt在wince上运行很卡很慢一段时间后变正常的问题
- org.json的基本用法
- IOS[Swift版]经典博客收藏
- 移动端解决两个andio不能同时播放的问题
- 前端相关的技术术语全称