C++实现设计模式——组合(Composite)模式
- 组合模式定义
把一组相似的对象当作一个单一的对象,它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。
- 组合模式应用场景
- 希望客户端可以忽略组合对象与单个对象的差异时;
- 对象层次具备整体和部分,呈树形结构(比如树形菜单,公司组织架构等)
- 有一个或多个共同特点。它们有一个主线。
- 组合模式举例
组合模式在日常中其实经常遇到,只是有时候我们不知道这种就是组合模式罢了。比如:文件系统,大家平时在windows里面无论是对于什么后缀的文件还是目录,我们都可以用删除,添加,重命名等统一的操作,不需要区别对待。手机菜单,话机菜单等等一切目录菜单也是一样的,我们可以用统一的接口操作。
-
为什么使用组合模式
接下来我们就用文件系统来说明一下我们为什么要用组合模式来设计,有什么好处?
其实这样做最大的好处是对用户客户端的,假设现在我们有个文件系统类,