Composite
概述:
容器与内容的一致性
说明:
1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系我删除!
转载请标注出处!
案例:
- 案例说明:
列出文件和文件夹一览
- 主要代码:
- Directory.java
package Gof.Composite; import java.util.Iterator; import java.util.ArrayList; public class Directory extends Entry { private String name; // 文件夹的名字 private ArrayList directory = new ArrayList(); // 文件夹中目录条目的集合 public Directory(String name) { // 构造函数 this.name = name; } public String getName() { // 获取名字 return name; } public int getSize() { // 获取大小 int size = 0; Iterator it = directory.iterator(); while (it.hasNext()) { Entry entry = (Entry)it.next(); size += entry.getSize(); } return size; } public Entry add(Entry entry) { // 增加目录条目 directory.add(entry); return this; } protected void printList(String prefix) { // 显示目录条目一览 System.out.println(prefix + "/" + this); Iterator it = directory.iterator(); while (it.hasNext()) { Entry entry = (Entry)it.next(); entry.printList(prefix + "/" + name); } } }
- 代码链接:传送门
uml综述
- Leaf(树叶):表示内容的对象,该角色中不能放入其他对象
- Composite(复合物):表示容器角色,可以放入leaf,composite对象
- Component:是leaf,composite角色的父类
- Client: 使用composite模式的角色
收获:
- 能够使容器内容具有一致性,创造出递归结构的模式就是composite模式
- 使用Composite模式可以使容器与内容具有一致性,也可以称之为多个和单个的一致性,即多个对象结合在一起,当做一个对象处理
相关设计模式:
- command: 编写宏命令时用到了composite模式
- visitor: 可以使用visitor 访问composite模式
- Decorator:使装饰框与内容具有一致性
- Composite: 时leaf和composite具有一致性
注意:
此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!
PS:欢迎大家来到我的小站,鸣谢!
猜你喜欢