1.什么是设计模式?
模式:在某些场景下,针对某类问题的某种通用解决方案
场景:项目环境
问题:约束条件,项目目标等
解决方案:通用、可以复用的设计,解决约束,达到目标
2.设计模式的分类
创建型模式:对象实例化的模式,创建型模式解耦了对象的实例化过程
结构型模式:把类或对象结合在一起形成更大的结构
行为型模式:类和对象如何交互,及划分责任和算法
3.对象设计的6大原则
- 组合复用原则
多用组合,少用继承
找到变化部分,抽象,封装变化
区分“Has-A”与“Is-A”
- 依赖倒置原则
依赖:成员变量、方法参数、返回值
要依赖于抽象,不要依赖于具体
高层模块不应该依赖低层模块,二者都应该依赖其抽象
抽象不应该依赖具体,具体应该依赖抽象
针对接口编程,不要针对实现编程
- 开闭原则
对扩展开放,对修改关闭
通过扩展已有软件系统,可以提供新的功能
修改的关闭,保证稳定性和延续性
- 迪米特法则
一个对象应该与其他对象保持最少的了解。只与直接朋友交谈。
成员变量、方法参数、方法返回值中需要的类为直接朋友
类与类之间的关系越密切了解越多,耦合度越大
尽量降低类与类之间的耦合
外观模式、中介者模式
- 里氏替换原则
所有引用基类的地方必须能透明地使用其子类对象
子类在扩展父类功能时不能破坏父类原有的功能
使用继承时,遵循里氏替换原则:
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
当子类重载父类方法时,方法的形参要比父类方法的参数更宽松
当子类实现父类的抽象方法时,方法的返回值要比父类更严格
- 单一职责原则
类应该只有一个导致类变更的理由
即一个类只负责一项职责