设计模式之GOF23组合模式
组合模式Composite
使用组合模式的场景:把部分和整体的关系用树形结构表示,从而使客户端可以使用统一的方式处理对象和整体对象(文件和文件夹)
组合模式核心:
-抽象构件(Component)角色:定义了叶子和容器的共同点
-叶子(Leaf)构件角色:无子节点
-容器(Composite)构件角色:有容器特征:可以包含子节点或者其他容器
例如杀毒软件:
public abstract class File {
protected String name;
abstract void killVirus();//杀毒
public File(String name) {
this.name = name;
}
}
class ImageFile extends File{
public ImageFile(String name) {
super(name);
}
public void killVirus() {
System.out.println("对图片"+this.name+".jpg进行杀毒");
}
}
class TextFile extends File{
public TextFile(String name) {
super(name);
}
public void killVirus() {
System.out.println("对文本"+this.name+".txt进行杀毒");
}
}
class Folder extends File{
List<File> files;
public Folder(String name) {
super(name);
files=new ArrayList<File>();
}
public void add(File f) {
files.add(f);
}
public void remove(int index) {
files.remove(index);
}
public File getChild(int index) {
return files.get(index);
}
void killVirus() {
System.out.println("对"+this.name+"进行查杀");
for(File f:files) {//天然的递归
f.killVirus();
}
}
}
public class Client {
public static void main(String[] args) {
File f2,f3,f4;
Folder f1=new Folder("我的收藏");
Folder f5=new Folder("我的小说");
f2=new ImageFile("小张");
f3=new TextFile("武林外传");
f4=new TextFile("家有儿女");
f5.add(f3);
f5.add(f4);
f1.add(f2);
f1.add(f5);
f1.killVirus();
}
}
设计模式之GOF23组合模式相关推荐
- 组合模式_设计模式结构性:组合模式(CompositePattern)
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...
- JAVA设计模式初探之组合模式
先看看组合模式的定义吧:"将对象组合成树形结构以表示'部分-整体'的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性." 就拿剪发办卡的事情来分析一下吧. 首先,一张 ...
- 从王者荣耀看设计模式(五.组合模式)
从王者荣耀看设计模式(组合模式) 一.简介 在王者荣耀这款游戏中,我们可以在商店中购买英雄.英雄由法师.射手.打野等职业组合而成,其中各个职业由中国元素的英雄和外国元素的英雄组成,玩家可根据需要挑选并 ...
- 《设计模式》12.组合模式(结构型)
又称"整体-部分"模式,组合多个对象形成树形结构以表示具有"整体-部分"关系的层次结构,使用户对单个对象和组合对象具有访问一致性. 角色 抽象构件(Compon ...
- AVA设计模式初探之组合模式
先看看组合模式的定义吧:"将对象组合成树形结构以表示'部分-整体'的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性." 就拿剪发办卡的事情来分析一下吧. 首先,一张 ...
- JAVA设计模式十七--Composite(组合模式)
组合模式 组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念 ,客户程序可以向处理简单元素一样来处理复杂元素,从而使 ...
- 再战设计模式(九)之组合模式
组合模式 工作流程分析 组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组合,使得用户在使用时可以一致性的对待容器和叶子 当容器对象的指定方法被调用时,将遍历整个树形结构,寻 ...
- 设计模式(17)之组合模式
一.前言 在现实生活中,存在很多"部分-整体"的关系,例如,大学中的部门与学院.总公司中的部门与分公司.学习用品中的书与书包.生活用品中的衣服与衣柜.以及厨房中的锅碗瓢盆等.在软件 ...
- 设计模式:(组合模式)
1.定义 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结 ...
- 设计模式笔记(9)---组合模式(结构型)
Gof定义 将对象组合成树形结构以表示"部分--整体"的层次结构.Composite使得用户对单个对象和组合对象使用具有一致性. 在面向对象系统中,我们经常会遇到一类具有" ...
最新文章
- TIOBE 2月编程语言排行榜:Python逼近C,Groovy重回TOP 20
- oracle+system空间满了,oracle审计导致system表空间爆满的处理方法
- CTA策略如何过滤部分震荡行情?
- nodejs安装node-gyp 报错
- 软件工程师与码农的区别
- 【联想拯救者R7000】蓝牙和wifi图标不显示问题(已解决)
- PyQt实现读取文件内容并绘制曲线
- 前端 实现 直角三角形 边长、角度计算工具
- 中国古代衣食住行 3
- 黄仁勋口述:英伟达的发展之道和星辰大海
- 兼容iOS10 的一些整理
- 基于卷积神经网络的猫种类的识别
- 禁用系统【快应用】,停止【快应用】自动弹出
- 学号20182325袁源 实验一《Linux基础与Java开发环境》实验报告
- 在少儿编程中使用easygui来实现交互(1)——msgbox
- 关于阅读英语文献的一些整理方法
- MFC注册表CRegKey
- Win7+Ubuntu双系统安装教程
- 应变片悬臂梁 电桥电路计算
- linux 用户和工作组管理
热门文章
- 四大猛壳之一的VMProtect轻松保护你的程序
- 面向对象三,约束,加密
- swift -inout关键字
- 安卓android eclipse运行提示no compatible targets were found
- nodejs+express中设置登录拦截器
- 算法面试:精选微软经典的算法面试100题(第21-25题)
- Java多线程300毫秒_Java多线程小程序(输出每个线程的毫秒级时间)-Go语言中文社区...
- oracle sql中查询语句where中字段不为空用if怎么写_MyBatis手把手跟我做系列(三) --- 动态SQL标签...
- 拓端tecdat|R语言中如何使用排队论预测等待时间?
- LeetCode8 字符串转整数