JAVA设计模式之组合模式
来源:互联网 发布:吸入麻醉药1.3mac 编辑:程序博客网 时间:2024/06/08 06:57
组合模式使用的场景
- 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象
- 组合模式的核心:
- 抽象构建(Component)角色:定义了叶子和容器构件的共同特点
- 叶子构建角色:无子节点
- 容器(Composite)构建角色:有容器特征,可以包含节点
package com.imust.composite;import java.util.ArrayList;import java.util.List;//抽象构建public interface AbstractFile { void killVirus();//杀毒}class ImageFile implements AbstractFile{ private String name; public ImageFile(String name){ this.name = name; } @Override public void killVirus() { System.out.println("--图像文件"+name+"进行查杀"); }}class TextFile implements AbstractFile{ private String name; public TextFile(String name){ this.name = name; } @Override public void killVirus() { System.out.println("--文本文件"+name+"进行查杀"); }}class VideoFile implements AbstractFile{ private String name; public VideoFile(String name){ this.name = name; } @Override public void killVirus() { System.out.println("--视频文件"+name+"进行查杀"); }}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(); } }}
测试类
package com.imust.composite;public class Client { public static void main(String[] args) { AbstractFile f2,f3,f4,f5,f6; Folder f1 = new Folder("我的收藏"); f2 = new ImageFile("老高的头像"); f3 = new TextFile("hello.txt"); f1.add(f2); f1.add(f3); f2.killVirus(); f1.killVirus(); }}
原型
package com.imust.composite;/** * 抽象组件 * @author Zachary (为上帝所心仪的人) * @date 2017年9月7日 * @project shejimoshi * @package com.imust.composite */public interface Component { void operation();}//叶子组件interface Leaf extends Component{}//容器组件interface Composite extends Component{ void add(Component c); void remove(Component c); Component getChild(int index);}
阅读全文
0 0
- java设计模式之组合设计模式
- java设计模式之组合模式
- java设计模式之组合模式Composite
- JAVA设计模式之组合模式
- java设计模式之组合模式
- 设计模式之组合模式java实现
- java设计模式之组合模式
- 【Java设计模式】之组合模式
- Java设计模式之组合模式
- Java设计模式泛型化之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式
- java设计模式之组合模式
- JAVA设计模式初探之组合模式
- java设计模式之组合模式篇
- Java设计模式之组合模式
- 单例模式Singleton
- ES6展开运算符(扩展运算符)的使用技巧
- 【dp/二分+暴力】MAGRID UVALive
- java中split的用法以及,Java 竖线|的转义符 是 "\\|"
- z-index合适会生效?
- JAVA设计模式之组合模式
- Java实现二叉树的先序、中序、后序、层次遍历,数的最大深度、最大宽度
- NSURLRequest
- struts2 模型驱动封装动态参数
- ucos-iii学习之写在前面
- JLINKv9在迅为iTop4412精英板上的应用
- 【HDUOJ】1961---Pie(二分)
- tf.train.batch()和tf.train.shuffle_batch()函数
- JAVA JDBC