设计模式
学习设计模式的原因
大多数有工作经验的都知道,项目最难的不是写代码,是优化代码,一个好的架构在后面改造的时候可以省去大量的时间,和优美的代码,一行代码长时间不看可能自己都不认识自己写的是啥,当我们的遵循六大设计原则后面迭代代码也会很方便!!! 23种设计模式也是站在这个基础之上的
六大设计原则
1: 单一职责原则
理解:不同的类具备不同的职责,各司其职。做系统设计是,如果发现有一个类拥有了两种职责,那么就要问一个问题:可以将这个类分成两个类吗?如果真的有必要,那就分开,千万不要让一个类干的事情太多。
总结:一个类只承担一个职责
2: 开放封闭原则
理解:类,模块,函数 可以取扩展,但是不要取修改代码,如果要去修改,尽量采用继承和组合方式来扩展类的功能,而不是直接修改类的代码,当然如果这个修改对整个架构或者改动的情况很小,兄弟咱省事直接修改这个类吧
总结:改动代码结构,最好扩展而不是修改
3:里式替换原则
理解:父类可以被子类替换,但反之不可以被替换,也就是说代码种父类可以实例对象可以其子类,程序不会报错,但是反之不一定了
总结:在继承类是,务必重写(override)父类中所有的方法,尤其需要注意父类的protected方法(它们往往是让你重写的),子类尽量不要暴露自己的public方法供外界调用。
4:最少知识原则
理解:尽量减少对象之间的交互,从而减少类之间的耦合,做设计时不要让一个类依赖太多其他的类,需要减少依赖关系
总结:低耦合,高内聚
5:接口隔离原则
理解:建立单一接口,不要建立一个庞大的接口,被多个类调用,尽量细化接口,为依赖接口的类定制服务,只暴露给调用的类它需要的方法,提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。(是不是和单一职责很像,都是定制化操作,区别在于,一个是约束类,其次才是接口和方法,针对的是细节,一个是约束接口,主要针对抽象,影响的是整个框架)
总结定制服务,提高内聚!
6:依赖倒置原则
理解:
一:上层模块不应该依赖底层模块他们应该依赖于抽象这点比较难以理解
打个比方你去汽车店看车是不是第一眼看到是各种车那我们画个图
汽车店是上层模块,汽车是希曾模块没错!先从顶端开始,然后往下到具体类,现在倒置你的想法从下层开始如下图,我们抽象了一个汽车调整后高层和底层模块都依赖与抽象
总结:面向接口编程,提出事物的共性!
设计模式的类型
共23种设计模式,这23种设计模式分为创建者模式,结构型模式,行为模式
创建者模式
- 工厂模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
结构型模式
- 适配器模式
- 桥接模式
- 过滤器模式
- 组合模式
- 装饰器模式
- 外观模式
- 享元模式
- 代理模式
行为型模式
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 空对象模式
- 策略模式
- 模板模式
- 访问者模式