组合模式
将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性
适用性
1.你想表示对象的部分-整体层次结构。
2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
不废话,上代码
public interface Node {
public void copy(); //定义统一的接口:复制
}
public class Folder implements Node{
private String folderName;
private ArrayList<Node> nodeList = new ArrayList<Node>(); //用于存储文件夹下的文件夹或文件的信息
public Folder(String folderName){
this.folderName = folderName;
}
public void add(Node node){ //增加文件或文件夹
nodeList.add(node);
}
public void remove(Node node) {
nodeList.remove(node);
}
public void copy(){ //文件夹复制操作实现递归
System.out.println("复制文件夹:" + folderName);
for(int i=0;i<nodeList.size();i++){
Node node = (Node)nodeList.get(i);
node.copy();
}
}
}
public class File implements Node {
private String fileName;
public File(String fileName){
this.fileName = fileName;
}
public void copy(){
System.out.println("复制文件:" + fileName);
}
}
public class Client {
public static void main(String[] args) {
Folder document = new Folder("我的资料"); //我的资料文件夹
File book = new File("Java编程思想.pdf"); //文档文件
Folder music = new Folder("我的音乐"); //我的音乐文件夹
Folder goodVoice = new Folder("好声音");
File music1 = new File("你是我的眼.mp3"); //音乐文件1
File music2 = new File("Without You.mp3"); //音乐文件2
File music3 = new File("rock You.mp3"); //音乐文件2
//确定树形结构关系
document.add(book);
document.add(music);
music.add(goodVoice);
goodVoice.add(music3);
music.add(music1);
music.add(music2);
document.copy(); //复制“我的资料”文件夹,递归地复制了其下所有文件夹和文件。
}
}
输出
复制文件夹:我的资料
复制文件:Java编程思想.pdf
复制文件夹:我的音乐
复制文件夹:好声音
复制文件:rock You.mp3
复制文件:你是我的眼.mp3
复制文件:Without You.mp3
- 大小: 81.4 KB
分享到:
相关推荐
《易学设计模式》这本书是面向软件开发人员的一本实用指南,旨在帮助读者轻松掌握设计模式这一核心的软件工程概念。设计模式是经过时间和实践验证的解决方案,它们针对在软件设计过程中经常遇到的问题提供了一套标准...
2. **结构型模式**:结构型模式关注类和对象的组合,如适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、组合模式(Composite)和代理模式(Proxy...
《易学_设计模式_郭志学》是针对Java编程领域的一本专注于设计模式的书籍。设计模式是软件工程中的重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。这些模式代表了在特定上下文中...
《Java易学设计模式》全书的随书源码,每一个章节一个压缩包,分别为:工厂模式、命令模式、组合模式、模板方法模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、享元模式、桥模式、装饰模式、代理...
《易学设计模式》源码是一份珍贵的学习资源,它基于JAVA语言,为读者提供了书中讲解的各种设计模式的实际实现。设计模式是软件工程中的重要概念,它们是解决常见问题的可复用解决方案,有助于提高代码的可读性、可...
第14章 如法炮制:组合模式 (Composite) 第15章 源源不断:享元模式 (Flyweight) 第16章 按部就班:模板方法模式 (TemplateMethod) 第17章 风吹草动:观察者模式 (Observer) 第18章 变化多端:状态模式 (State) 第19...
组合模式(Composite)允许你将对象组合成树形结构来表现“整体/部分”层次结构;外观模式(Facade)为复杂的子系统提供一个简单的接口;享元模式(Flyweight)用于高效地支持大量细粒度对象的使用。 3. 行为型模式...
2. 结构型模式:这些模式处理如何组合对象和类以形成更大的结构,比如适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)和...
Java《易学设计模式》随书源代码,书中介绍了多种JAva模式的方法和使用,比如简单工厂模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、命令模式、模板方法模式、享元模式、桥模式、代理模式、适配器...
JavaScript的设计理念是简洁易学,即便是编程新手也能用它编写实用的代码。随着程序员技能的提升,JavaScript的能力也在增长,可以帮助编写更加复杂和高效的程序。它能够模仿其他编程语言的模式和惯例,同时形成了...
摘要:Java源码,书籍源码,随书源码,设计模式,Java电子书 运行环境:Java/Eclipse
《易学C++》第二版的电子版
在“易学设计模式代码”这个压缩包中,你将找到这些模式的Java实现示例。通过阅读和分析这些代码,你可以更好地理解每种模式的核心思想,以及如何在实际项目中应用它们。同时,虽然这里的示例是基于Java,但设计模式...
资源比较大,只好分来传输,否则传不上去。设计模式中的经典书籍,强烈建议看这本书来学习设计模式。gof的设计模式太抽象了,这本书非常易学。
Python作为一门易读、易学的编程语言,也广泛应用了各种设计模式。本资源“Python常用设计模式源码”包含了一些在Python编程中常见的设计模式实现。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。...
《精通Python设计模式》这本书是针对那些希望提升Python编程技能,特别是想要深入理解软件设计原则和模式的专业人士所准备的。作为运维高级工程师,掌握设计模式不仅能够优化代码结构,提高代码可读性和可维护性,还...
boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发
该文档通过通俗易懂的描述外加代码实现的方式来讲述java的23中设计模式,简单易学。