组合模式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组合模式相关推荐

  1. 组合模式_设计模式结构性:组合模式(CompositePattern)

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...

  2. JAVA设计模式初探之组合模式

    先看看组合模式的定义吧:"将对象组合成树形结构以表示'部分-整体'的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性." 就拿剪发办卡的事情来分析一下吧. 首先,一张 ...

  3. 从王者荣耀看设计模式(五.组合模式)

    从王者荣耀看设计模式(组合模式) 一.简介 在王者荣耀这款游戏中,我们可以在商店中购买英雄.英雄由法师.射手.打野等职业组合而成,其中各个职业由中国元素的英雄和外国元素的英雄组成,玩家可根据需要挑选并 ...

  4. 《设计模式》12.组合模式(结构型)

    又称"整体-部分"模式,组合多个对象形成树形结构以表示具有"整体-部分"关系的层次结构,使用户对单个对象和组合对象具有访问一致性. 角色 抽象构件(Compon ...

  5. AVA设计模式初探之组合模式

    先看看组合模式的定义吧:"将对象组合成树形结构以表示'部分-整体'的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性." 就拿剪发办卡的事情来分析一下吧. 首先,一张 ...

  6. JAVA设计模式十七--Composite(组合模式)

    组合模式 组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念   ,客户程序可以向处理简单元素一样来处理复杂元素,从而使 ...

  7. 再战设计模式(九)之组合模式

    组合模式 工作流程分析 组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组合,使得用户在使用时可以一致性的对待容器和叶子 当容器对象的指定方法被调用时,将遍历整个树形结构,寻 ...

  8. 设计模式(17)之组合模式

    一.前言 在现实生活中,存在很多"部分-整体"的关系,例如,大学中的部门与学院.总公司中的部门与分公司.学习用品中的书与书包.生活用品中的衣服与衣柜.以及厨房中的锅碗瓢盆等.在软件 ...

  9. 设计模式:(组合模式)

    1.定义 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结 ...

  10. 设计模式笔记(9)---组合模式(结构型)

    Gof定义 将对象组合成树形结构以表示"部分--整体"的层次结构.Composite使得用户对单个对象和组合对象使用具有一致性. 在面向对象系统中,我们经常会遇到一类具有" ...

最新文章

  1. TIOBE 2月编程语言排行榜:Python逼近C,Groovy重回TOP 20
  2. oracle+system空间满了,oracle审计导致system表空间爆满的处理方法
  3. CTA策略如何过滤部分震荡行情?
  4. nodejs安装node-gyp 报错
  5. 软件工程师与码农的区别
  6. 【联想拯救者R7000】蓝牙和wifi图标不显示问题(已解决)
  7. PyQt实现读取文件内容并绘制曲线
  8. 前端 实现 直角三角形 边长、角度计算工具
  9. 中国古代衣食住行 3
  10. 黄仁勋口述:英伟达的发展之道和星辰大海
  11. 兼容iOS10 的一些整理
  12. 基于卷积神经网络的猫种类的识别
  13. 禁用系统【快应用】,停止【快应用】自动弹出
  14. 学号20182325袁源 实验一《Linux基础与Java开发环境》实验报告
  15. 在少儿编程中使用easygui来实现交互(1)——msgbox
  16. 关于阅读英语文献的一些整理方法
  17. MFC注册表CRegKey
  18. Win7+Ubuntu双系统安装教程
  19. 应变片悬臂梁 电桥电路计算
  20. linux 用户和工作组管理

热门文章

  1. 四大猛壳之一的VMProtect轻松保护你的程序
  2. 面向对象三,约束,加密
  3. swift -inout关键字
  4. 安卓android eclipse运行提示no compatible targets were found
  5. nodejs+express中设置登录拦截器
  6. 算法面试:精选微软经典的算法面试100题(第21-25题)
  7. Java多线程300毫秒_Java多线程小程序(输出每个线程的毫秒级时间)-Go语言中文社区...
  8. oracle sql中查询语句where中字段不为空用if怎么写_MyBatis手把手跟我做系列(三) --- 动态SQL标签...
  9. 拓端tecdat|R语言中如何使用排队论预测等待时间?
  10. LeetCode8 字符串转整数