面向对象设计模式
设计模式的定义
面向对象的遵循设计原则的能够抽象出来的都是设计模式。
设计模式用来降低问题的复杂度,不能用来解决技术难点。
什么是设计模式?
每一种模式都描述了一种问题的通用解决方案。这种问题在我们的环境中,不停地出现。
设计模式是一种
可重复使用
的解決方案。
设计模式的四个部分
模式的名称 - 由少量的字组成的名称、有助于我们表达我们的设计。
待解问题 - 描述了何时需要运用这种模式,以及运用模式的环境(上下文)。
解决方案 - 描述了
组成设计的元素
(类和对象)、它们的关系、职责以及合作。但这种解决方案是抽象的,它不代表具体的实现。结论 - 运用这种方案所带来的利和弊。主要是指它对系统的弹性、扩展性、和可移植性的。最终目的是高内聚、低耦合。
常见设计模式
| 模式 | 待解问题 | 元素 | |
| --- | --- | --- | --- |
| 策略 | --- | 1 客户程序 2 策略(接口) 3 策略实现 | --- |
| 观察者 | 通知观察者 | 1 观察者 1.1 观察者接口 2 被观察者 2.1 集合成员(哪些观察者在观察) | --- |
| 适配器 | 依赖倒置,根据高层定义接口适配不便实现的接口,重新定义函数同时复用已有函数。实现改变,接口不变。 | --- | 类适配、对象适配 |
| 简单工厂 | 隐藏 bean 创建细节 | 1 客户程序 2 策略接口 3 策略实现 4 Bean 工厂 | 是许多其他模式的基础,读取配置来创建 bean 解决了工厂模式的开闭原则问题 |
| 单例 | 在指定作用域内只实例化一个实例 | --- | --- |
| 组合 | 树 - 文件系统、菜单 | 1 策略 2 子组件 3 遍历自身 | --- |
| 模板 | --- | 1 模板方法 2 定义模板方法执行顺序 3 客户程序 实现修改具体的逻辑 | --- |
| 装饰器 | 对现有函数追加功能(编译期) | 1 统一接口 2 装饰者 3 被装饰者 | 装饰者和被装饰者通过构造函数传递,可以互相装饰 |
| MVC | --- | --- | --- |
| 代理 | 运行期动态赋能。 | --- | --- |
| --- | --- | --- | --- |
版权声明: 本文为 InfoQ 作者【陈皮】的原创文章。
原文链接:【http://xie.infoq.cn/article/4599523e90f8ce661633482a1】。文章转载请联系作者。
评论