简介
作为一个技术小白注册博客好几年了,每次都是在看其他大牛的博客学习。这几天在看设计模式相关的书籍,就想
把这段时间的体会记录下来,也便于以后翻看。
首先设计模式的出现是为了解决在实际项目中结构混乱,功能不清晰、层次划分不明确等问题。而在使用设计模
式的前提下,则需要遵循相应的准则。针对目前GoF提出的23种设计模式,按照不同的功能可以划分为创建型模式、结
构型模式、行为型模式,每种设计模式也都会遵循其中的一个或多个准则。下面简单汇总下模式的分类和设计的六个
准则。
一、模式分类
1、创建型模式
- 单例模式
- 工厂模式
- 原型模式
- 建造者模式
- 抽象工厂模式
2、结构型模式
* 代理模式
* 适配器模式
* 桥接模式
* 外观模式
* 享元模式
* 组合模式
* 装饰模式
3、行为型模式
+ 模板模式
+ 策略模式
+ 命令模式
+ 责任链模式
+ 观察者模式
+ 状态模式
+ 中介者模式
+ 迭代器模式
+ 访问者模式
+ 备忘录模式
+ 解释器模式
二、模式设计准则
**单一职责准则(Single Responsibility Principle, SRP)**
单一职责见名知意,每个类只需要维护好自己的一个职责,不用耦合其他功能。比如设计的一个订单类或接
口,只完成创建订单、更新订单,而不需要去完成支付功能,因为支付功能可以在支付类或接口实现。这样
每个类或接口各司其职,减少模块功能之间的耦合
**依赖倒置准则 (Dependence Inversion Principle, DIP)**
所谓依赖倒置,其实就是为了让大家在设计功能时,多考虑使用接口或者抽象类。这样在后续需求有变更需要
更改当前功能时,可以通过依赖或者实现上层接口增加新的功能,而不需要更改已经实现的子类。也就是多
依赖上层接口,减少修改子类代码
**接口隔离准则 (Interface Segregation Principle,ISP)**
接口隔离和单一职责有点相似,在单一职责中,每个类只要有一个职责就好,接口隔离是要减少与其他类或
者接口之间的耦合。两者的目标 都是为了低耦合,但是不同的是单一职责约束的是类,针对的是程序的实
现细节,接口隔离是约束接口,针对的是抽象和整体
**开闭准则 (Open Closed Principle, OCP)**
开闭准则是对设计模式的最基本的要求,简单来说就是说在设计出的接口需要支持可扩展,避免使用具体类
来定义。一句话概括就是对修改是关闭,对扩展是支持的
** 迪米特准则 (Least Knowledge Principle, LKP)**
迪米特准则也称之为最少知道原则,也就是各个接口或者类不需要知道其他接口的具体功能,只需要提供接
口出来供调用者使用即可,至于具体的逻辑操作,对于调用者来说不需要关心。这也是为了减少模块之间的
耦合
** 里氏代换准则(Liskov Substitution Principle,LSP)**
里氏代换是在所有可以使用父类的地方可以通过子类来替换,子类在扩展父类的时候,不应该更改父类原
有的功能,也是实现开闭原则的重要方式之一
总结
设计模式是为了更好的服务于我们的程序设计,在处理问题的时候,能够使用代码结构清晰,直观、可扩展的方式来
完成,达到易读、可扩展、高内聚、低耦合的目标。