`

易学设计模式二 组合模式(Composite)

阅读更多
组合模式

将对象组合成树形结构以表示"部分-整体"的层次结构。"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书籍《易学设计模式》全部源码.rar

    《Java易学设计模式》全书的随书源码,每一个章节一个压缩包,分别为:工厂模式、命令模式、组合模式、模板方法模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、享元模式、桥模式、装饰模式、代理...

    《易学设计模式》源码

    《易学设计模式》源码是一份珍贵的学习资源,它基于JAVA语言,为读者提供了书中讲解的各种设计模式的实际实现。设计模式是软件工程中的重要概念,它们是解决常见问题的可复用解决方案,有助于提高代码的可读性、可...

    [源代码] 《易学 设计模式》 随书源代码

    第14章 如法炮制:组合模式 (Composite) 第15章 源源不断:享元模式 (Flyweight) 第16章 按部就班:模板方法模式 (TemplateMethod) 第17章 风吹草动:观察者模式 (Observer) 第18章 变化多端:状态模式 (State) 第19...

    java-易学设计模式

    组合模式(Composite)允许你将对象组合成树形结构来表现“整体/部分”层次结构;外观模式(Facade)为复杂的子系统提供一个简单的接口;享元模式(Flyweight)用于高效地支持大量细粒度对象的使用。 3. 行为型模式...

    设计模式例子文档,简单易学

    2. 结构型模式:这些模式处理如何组合对象和类以形成更大的结构,比如适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)和...

    Java《易学设计模式》随书源码.rar

    Java《易学设计模式》随书源代码,书中介绍了多种JAva模式的方法和使用,比如简单工厂模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、命令模式、模板方法模式、享元模式、桥模式、代理模式、适配器...

    avascript设计模式.pdf

    JavaScript的设计理念是简洁易学,即便是编程新手也能用它编写实用的代码。随着程序员技能的提升,JavaScript的能力也在增长,可以帮助编写更加复杂和高效的程序。它能够模仿其他编程语言的模式和惯例,同时形成了...

    Java《易学设计模式》全书源代码

    摘要:Java源码,书籍源码,随书源码,设计模式,Java电子书 运行环境:Java/Eclipse

    《易学C++》第二版

    《易学C++》第二版的电子版

    介绍设计模式的代码

    在“易学设计模式代码”这个压缩包中,你将找到这些模式的Java实现示例。通过阅读和分析这些代码,你可以更好地理解每种模式的核心思想,以及如何在实际项目中应用它们。同时,虽然这里的示例是基于Java,但设计模式...

    head first 设计模式(中文版) part3 总共三部分

    资源比较大,只好分来传输,否则传不上去。设计模式中的经典书籍,强烈建议看这本书来学习设计模式。gof的设计模式太抽象了,这本书非常易学。

    Python常用设计模式源码

    Python作为一门易读、易学的编程语言,也广泛应用了各种设计模式。本资源“Python常用设计模式源码”包含了一些在Python编程中常见的设计模式实现。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。...

    精通python设计模式

    《精通Python设计模式》这本书是针对那些希望提升Python编程技能,特别是想要深入理解软件设计原则和模式的专业人士所准备的。作为运维高级工程师,掌握设计模式不仅能够优化代码结构,提高代码可读性和可维护性,还...

    boaPHP是一款灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发

    boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发

    Java设计模式(经典版)

    该文档通过通俗易懂的描述外加代码实现的方式来讲述java的23中设计模式,简单易学。

Global site tag (gtag.js) - Google Analytics