设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计的精要”。
七大原则:
- 单一职责原则
对类来说的,即一个类应该只负责一项职责。
- 接口隔离原则
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
- 依赖倒置原则
高层模块不应该依赖低层模块,二者都应该依赖其抽象。
低层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好。
抽象不应该依赖细节,细节应该依赖抽象。
依赖倒置的中心思想是面向接口编程。
继承时遵循里氏替换原则。
依赖关系传递的三种方式:
- 接口传递
- 构造方法传递
- setter 方法传递
- 里氏替换原则
使用继承会给程序带来侵入性,程序的可移植性降低,增加对象之间的耦合性。
在使用继承时,子类中尽量不要重写父类的方法。
通用做法:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合、组合等关系代替。
- 开闭原则
一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。
开闭原则
- 迪米特法则(最少知道原则)
一个对象应该对其他对象保持最少的了解。
只与直接的朋友通信。
直接的朋友:出现在成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类不是直接的朋友。也就是说,陌生的类最好不要以局部变量的形式出现在内部。
- 合成复用原则
尽量使用合成、聚合的方式,而不是使用继承。
设计原则核心思想
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 为了交互对象之间的松耦合设计而努力。
设计模式分为三种类型:
- 创建型模式:单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式
- 结构性模式:适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式
- 行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式