组合模式 古城微笑少年丶 2022-04-18 04:47 209阅读 0赞 # 组合模式 # ## 一、概述 ## 1. 组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组 合,使得用户在使用时可以一致性的对待容器和叶子。 2. 当容器对象的指定方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员, 并调用执行。其中,使用了递归调用的机制对整个结构进行处理。 3. 使用场景 * 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对 象和整体对象 * 杀毒软件架构设计 * 操作系统的资源管理器 * XML文件解析 4. 模式核心 * 抽象构件(Component)角色: 定义了叶子和容器构件的共同点 * 叶子(Leaf)构件角色:无子节点 * 容器(Composite)构件角色: 有容器特征,可以包含子节点,可以添加删除子节点 5. 类结构 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tpbmdfY2Fubm9uX2ZvZGRlcg_size_16_color_FFFFFF_t_70] ## 二、代码模拟杀毒软件 ## 1. 抽象文件接口 public interface AbstractFile { void killVirus(); //杀毒 } 2. 文件夹容器类 class Folder implements AbstractFile { private String name; //定义容器,用来存放本容器构建下的子节点 private List<AbstractFile> list = new ArrayList<AbstractFile>(); public Folder(String name) { super(); this.name = name; } public void add(AbstractFile file){ list.add(file); } public void remove(AbstractFile file){ list.remove(file); } public AbstractFile getChild(int index){ return list.get(index); } @Override public void killVirus() { System.out.println("---文件夹:"+name+",进行查杀"); for (AbstractFile file : list) { file.killVirus(); } } } 3. 叶子文件类 class ImageFile implements AbstractFile { private String name; public ImageFile(String name) { super(); this.name = name; } @Override public void killVirus() { System.out.println("---图像文件:"+name+",进行查杀!"); } } class TextFile implements AbstractFile { private String name; public TextFile(String name) { super(); this.name = name; } @Override public void killVirus() { System.out.println("---文本文件:"+name+",进行查杀!"); } } class VideoFile implements AbstractFile { private String name; public VideoFile(String name) { super(); this.name = name; } @Override public void killVirus() { System.out.println("---视频文件:"+name+",进行查杀!"); } } 4. 模拟查杀操作 public class Client { public static void main(String[] args) { AbstractFile f2,f3,f4,f5; Folder f1 = new Folder("我的收藏"); f2 = new ImageFile("我的头像.jpg"); f3 = new TextFile("Hello.txt"); f1.add(f2); f1.add(f3); Folder f11 = new Folder("电影"); f4 = new VideoFile("笑傲江湖.avi"); f5 = new VideoFile("神雕侠侣.avi"); f11.add(f4); f11.add(f5); f1.add(f11); // f2.killVirus(); f1.killVirus(); } } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tpbmdfY2Fubm9uX2ZvZGRlcg_size_16_color_FFFFFF_t_70]: /images/20220418/00cefbd808d94897a37ba7df667d7309.png
相关 组合模式 在我写外观模式的时候,我是举最近在做的一个考勤的例子,不熟悉的小伙伴可以去看一下前面的文章哦,在那个例子中我们分析了一下,考勤中每种类别员工的工作日计算方式是不一样的,比如说一 川长思鸟来/ 2022年05月09日 15:00/ 0 赞/ 230 阅读
相关 组合模式 组合模式 一、概述 1. 组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组 合,使得用户在使用时可以一致性的对待容器和叶子。 2. 古城微笑少年丶/ 2022年04月18日 04:47/ 0 赞/ 210 阅读
相关 组合模式 > 本文总结摘自刘伟老师的《设计模式》和程杰老师的《大话设计模式》 1.定义 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个 朴灿烈づ我的快乐病毒、/ 2022年01月23日 00:21/ 0 赞/ 253 阅读
相关 组合模式 前言 组合模式(Composite),将对象组合树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 一、Compone 傷城~/ 2021年12月09日 00:49/ 0 赞/ 296 阅读
相关 组合模式 树形结构在软件中十分常见,如操作系统中的文件结构,文件夹包含文件和子文件夹,而子文件夹又包含文件和子子文件夹,像这样的结构称为树形结构。在树形结构中,文件夹或子文件夹称为容器( 清疚/ 2021年11月04日 16:10/ 0 赞/ 365 阅读
相关 组合模式 用途 -------------------- 组合模式 (Component) 将对象组合成 树形结构以表示“部分-整体”的层次结构。 组合模式使得用户对单个对象和 以你之姓@/ 2021年09月26日 15:50/ 0 赞/ 286 阅读
相关 组合模式 组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 透明方式:就是在component中声明所有用来管理子对 r囧r小猫/ 2021年09月17日 03:18/ 0 赞/ 430 阅读
相关 组合模式 11.组合模式 ![70][] //抽象构件,它是叶子和容器共同的父类,并且声明了叶子和容器的所有方法 abstract class Abstr 末蓝、/ 2021年09月16日 23:58/ 0 赞/ 368 阅读
相关 组合模式 一 概述 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nL 你的名字/ 2021年07月24日 17:14/ 0 赞/ 546 阅读
相关 组合模式 合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类... 小灰灰/ 2020年06月13日 05:57/ 0 赞/ 805 阅读
还没有评论,来说两句吧...