设计模式——组合模式
来源:互联网 发布:知乎账号怎么注销 编辑:程序博客网 时间:2024/05/29 19:34
设计模式是人们从长期的软件开发实战中总结出来的一些经验之谈,为软件领域中的开发人员提供了一种使用专家设计经验的有效途径,通常是多个设计模式结合使用。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,只有通过大量的编程实践才能真正领悟设计模式的精髓。在参加校招前我翻看了部分设计模式相关的书,对于每个设计模式模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式》两本书以及借鉴其他博客园博文的优秀部分。本文介绍观察者模式的实现。希望对大家加深对设计模式的理解有一点帮助。
将对象组合成树形结构以表示“部分-整体”的层次结构。C o m po s i t e 使得用户对单个对象和组合对象的使用具有一致性。
- 你想表示对象的部分-整体层次结构。
- 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
一、举例
这个例子是书上的,假设有一个公司的组结结构如下:
它的结构很像一棵树,其中人力资源部和财务部是没有子结点的,具体公司才有子结点。
而且最关健的是,它的每一层结构都很相似。
代码实现如下:
二、说明
1. 上面公司的结构图其实就是整体与部分的关系,而且的话整体与部分可以一致对待,因为有很多相似之处嘛。
2. 这棵树有两种几能,要么是棵叶,要么是子棵。
其实这种模式就是组合模式。
三、组合模式
定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。
要注意两点:
1. “树形”,必须是一种层次结构,有可以向下延伸的分枝,也有不变的树叶。
2. "一致性",也就是要具有很多相似性。
结构图如下:
component:主要是定义统一的接口,说白了也就是提取出相似性。
composite:定义分枝节点,也就是子树。
leaf:定义叶节点,叶节点是没有子节点的。
好啦,关于组合模式就介绍到这里了,希望你已经掌握了这个模式并且可以熟练的使用它,那么本博文的效果就达到了。如果你还觉得意犹未尽,那么可以去看看博主的其他设计模式的介绍哦。
关于设计模式,我推荐大家看看以下博客写的博文,关于设计模式的讲解将的特别好,我从中学习了很多,我的设计模式中的部分博文就是从这里借鉴过来的。
关于设计模式,我推荐大家看看以下博客写的博文,关于设计模式的讲解将的特别好,我从中学习了很多,我的设计模式中的部分博文就是从这里借鉴过来的。
博客链接:http://blog.csdn.net/wuzhekai1985
- 设计模式—组合模式
- 设计模式—组合模式
- 设计模式——组合设计模式
- 设计模式组合——命令模式组合工厂模式
- 每日设计模式——组合模式
- 设计模式——组合模式
- Java设计模式——组合模式
- java设计模式——组合模式
- 设计模式——组合模式
- 设计模式——组合模式
- 设计模式——组合模式
- 设计模式——组合模式
- Python设计模式——组合模式
- 设计模式8——组合模式
- C++设计模式——组合模式
- 设计模式——组合模式
- C++设计模式——组合模式
- 设计模式——组合模式
- word在线开发工具或导出word的工具
- android apk获取root权限执行相应的操作 demo调试
- Apache+Tomcat集群配置
- 使用JavaScript的XMLHttpRequest发送POST、GET请求以及接收返回值
- spark 2.0 spark Inbox消息类型
- 设计模式——组合模式
- UI组件:日历视图(CalendarView)
- C++primer5th课后题13章13.13、13.22、13.26、13.27
- 查看linux版本信息
- 程序设计
- swift 学习笔记(12)-区间运算符
- Ubuntu下启动Apache的Rewrite功能
- Codevs2597 团伙 并查集
- 跨页面锚点跳转效果