简介
什么是设计模式?
设计模式,是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术,实现了高内聚、低耦合这样重要目的。 高内聚、低耦合使得程序模块的可重用性、移植性大大增强。
设计模式的基本要素
设计模式一般包括模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素.
关键元素包括以下四个方面:
模式名称:通过一两个词来描述模式的问题、解决方案和效果,以便用户更好地理解模式并方便开发人员之间的沟通。多数模式是根据其功能或者模式结构来命名的。
问题:描述了应该在何时使用模式,包含了设计中存在的问题以及问题存在的原因。
解决方案:描述了设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式。解决方案通过类图和核心代码来进行说明。
效果:描述了模式应用的效果以及在使用模式时应该权衡的问题。包含了模式的优缺点分析,没有模式是完美的,开发者需要记住这点.
设计模式的分类
根据目的分类
创建型模式
工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式.
结构型模式
适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式.
行为型模式
职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、策略模式、模版方法模式和访问者模式.
根据范围分类
类模式:
此类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时被确定下来,是一种静态关系.
对象模式:
此类模式处理对象间的关系,这些关系在运行时不变化,具有动态性.
创建型模式 | 结构型模式 | 行为型模式 | |
类模式 | 工厂方法模式 | (类)适配器模式 | 解释器模式 模板方法模式 |
对象模式 | 抽象工厂模式 建造者模式 原型模式 单例模式 | (对象)适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 | 职责链模式 命令模式 迭代器模式 中介者模式 备忘录模式 观察者模式 策略模式 访问者模式 |
面向对象设计原则
面向对象设计的目的:
支持可维护性复用
实现设计方案或者源代码的复用
确保系统能够易于扩展和修改,具有良好的可维护性
设计原则名称 | 定义 | 使用频率 |
单一职责原则 | 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中 | ★★★★☆ |
开闭原则 | 软件实体应当对扩展开发,对修改关闭 | ★★★★★ |
里氏代换原则 | 所有引用基类的地方必须能透明地使用其子类的对象 | ★★★★★ |
依赖倒转原则 | 高层模块不应噶依赖底层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象 | ★★★★★ |
接口隔离原则 | 客户端不应该依赖那些它不需要的接口 | ★★☆☆☆ |
合成复用原则 | 优先使用对象组合,而不是继承来达到复用的目的 | ★★★★☆ |
迪米特法则 | 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位 | ★★★☆☆ |