java设计模式-合成模式的实现

java设计模式-合成模式的实现

ID:18465576

大小:46.50 KB

页数:7页

时间:2018-09-18

java设计模式-合成模式的实现_第1页
java设计模式-合成模式的实现_第2页
java设计模式-合成模式的实现_第3页
java设计模式-合成模式的实现_第4页
java设计模式-合成模式的实现_第5页
资源描述:

《java设计模式-合成模式的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、原理图    从原理图可见,File、Folder都可以同等看待苇IFile,为对象管理提供了极大的便利。   当然,树的概念不单单是文件文件夹的层次概念,只是因为这个很形象,实际中还有很多树的概念,比如组织机构,分类层次等等,都是逻辑上的概念,不管是物理上的还是逻辑上的,在Java里都是一样处理的。   二、实例下面以一个逻辑树为例子,以上面的原理图为蓝本,看看如何实现并如何使用这个树,这个结构很简单,但是如何去使用树,遍历树、为我所用还是有一定难度的。   这里主要用到树的递归遍历,如何递归、如何控制遍历层级,如何将逻辑关系转换为(

2、类似)物理关系,这些都是有相当难度的。   废话就不说了,看看便知。 /***CreatedbyIntelliJIDEA.*User:leizhimin*Date:2008-8-216:13:59*抽象文件角色*/publicinterfaceIFile{    //返回自己的实例    IFilegetComposite();    //某个商业方法    voidsampleOperation();    //获取深度    intgetDeep();    //设置深度    voidsetDeep(intx);} importjav

3、a.util.Vector;/***CreatedbyIntelliJIDEA.*User:leizhimin*Date:2008-8-216:15:03*文件夹角色*/publicclassFolderimplementsIFile{    privateStringname;    //文件名字    privateintdeep;      //层级深度,根深度为0    privateVectorcomponentVector=newVector();    publicFolder(Stringname

4、){        this.name=name;    }    //返回自己的实例    publicIFilegetComposite(){        returnthis;    }    //某个商业方法    publicvoidsampleOperation(){        System.out.println("执行了某个商业方法!");    }    //增加一个文件或文件夹    publicvoidadd(IFileIFile){        componentVector.addElement(IFile

5、);        IFile.setDeep(this.deep+1);    }    //删除一个文件或文件夹    publicvoidremove(IFileIFile){        componentVector.removeElement(IFile);    }    //返回直接子文件(夹)集合    publicVectorgetAllComponent(){        returncomponentVector;    }    publicStringgetName(){        returnname;

6、    }    publicvoidsetName(Stringname){        this.name=name;    }    publicintgetDeep(){        returndeep;    }    publicvoidsetDeep(intdeep){        this.deep=deep;    }} /***CreatedbyIntelliJIDEA.*User:leizhimin*Date:2008-8-216:27:15*文件*/publicclassFileimplementsIFile

7、{    privateStringname;    //文件名字    privateintdeep;      //层级深度    publicFile(Stringname){        this.name=name;    }    //返回自己的实例    publicIFilegetComposite(){        returnthis;    }    //某个商业方法    publicvoidsampleOperation(){        System.out.println("执行了某个商业方法!");  

8、  }    publicStringgetName(){        returnname;    }    publicvoidsetName(Stringname){  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。