组合模式
来源:互联网 发布:md204lv4编程软件下载 编辑:程序博客网 时间:2024/05/16 08:01
使用组合模式的场景:把部分和整体的关系用树状结构来表示,从而是客户端可以使用统一的方式处理,部分对象和整体对象
核心:
- 抽象构件角色:定义好叶子和容器构件的共同点。
- 叶子构件角色:无叶子节点。
- 容器构件角色:有容器特征,可以包含子节点。
AbstracFile.java(接口)
//抽象构建public interface AbstractFile {void killVirus(); //杀毒}class ImageFile implements AbstractFile {private String name;public ImageFile(String name) {super();this.name = name;}@Overridepublic void killVirus() {System.out.println("---图像文件:"+name+",进行查杀!");}}class TextFile implements AbstractFile {private String name;public TextFile(String name) {super();this.name = name;}@Overridepublic void killVirus() {System.out.println("---文本文件:"+name+",进行查杀!");}}class VideoFile implements AbstractFile {private String name;public VideoFile(String name) {super();this.name = name;}@Overridepublic 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);}@Overridepublic void killVirus() {System.out.println("---文件夹:"+name+",进行查杀");for (AbstractFile file : list) {file.killVirus();}}}
Client.java(测试类)
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();}}
阅读全文
0 0
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 组合模式
- 微信支付应用签名修改后多久可以生效?
- Java 集合List删除元素
- 枚举理解
- 输入输出,数据类型,python编码问题
- ndk调试。。
- 组合模式
- git拉取远程分支并创建本地分支和Git中从远程的分支获取最新的版本到本地
- ToBeAppliedRequestProcessor
- taskctl能解决的问题和应用场景
- [编程题] 彩色的砖块
- Machine learning11降维与度量学习(-)k近邻学习在高纬空间的的方法----低维嵌入
- zabbix详细安装步骤(已验证)
- unity 粒子系统学习
- AntDesign使用遇到问题整理