标签:JAVA 组合 对象 remove ---- add leaf 设计模式
组合设计模式
组合模式(Composite) ,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示 整体-部分 的层次关系。
组合模式依据树形结构来组合对象,用来表示部分以及整体层次。
属于结构型设计模式。
组合模式使得用户对单个对象与组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。
何时使用组合模式:当需求中是体现部分与整体层次的结构的时候,或者是用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。
如这个IO系统
透明方式:因为leaf中没有下一级了,如果你在Component中声明add();和remove();为抽象方法的的话,那么leaf就必须实现这两个方法,这就叫透明方式,
也就是说在Component中声明所有用来管理子对象的方法,例如上面这个两个add();和remove();
这样,只要实现了Component接口的子类就必须具备add();和remove();方法。
好处:就是leaf节点和composite对于外界来说没有区别,它们具有完全一致的行为接口。
缺点:leaf节点本身就不具备add和remove功能所以实现它们并没有什么意义。
安全方式:在Component中不声明add();和remove();或者不设置为抽象,这样leaf就不需要实现add和remove方法了。不过由于不够透明,用户在使用的时候需要判断时leaf还是composite了。
开发不能有倾向性,一切都要视情况而选择使用哪一种方式,所以它们两者不存在谁好谁坏。
在JDK中Map、List都使用了这种模式。
标签:JAVA,组合,对象,remove,----,add,leaf,设计模式 来源: https://blog.csdn.net/weixin_43285931/article/details/121532602
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。