目录
一、前提:
每次学习设计原则与设计模式都能有不一样的理解;因此之后的每次学习都要会在此博文进行相应的修改与补充。
二、面向对象编程七大原则:
- 开闭原则
- 迪米特原则
- 合成复用原则
- 依赖倒置原则
- 里氏代换原则
- 单一责任原则
- 接口隔离原则
三、面向对象编程围绕着七大原则的二十四种设计模式:
六种建造型设计模式:
- 简单工厂模式
- 工厂方法模式
- 抽象方法模式
- 单例模式
- 原型模式
- 建造者模式
七种结构性设计模式:
- 适配器模式
- 享元模式(很少被使用)
- 装饰模式
- 代理模式
- 组合模式
- 桥接模式
- 外观模式
十一种行为性设计模式:
- 观察者模式:(被观察者含观察者,当被观察者执行被观察操作时,执行通知观察者操作)
- 命令模式:(继承/实现命令接口,每个命令实现一个实体类)
- 职责链模式:(任务交由职责链执行,通过迭代方法找到对应职责对象执行任务)
- 解释器模式
- 迭代器模式
- 中介者模式:(也称仲裁者模式,多同事对象协同使用时,仲裁者管理的同事对象执行操作需经过仲裁者仲裁,仲裁结果由仲裁者调用相应同事对象方法执行,同事对象不可擅自执行)
- 备忘录模式:(用特定对象将对象属性值抽离出,用于属性的回归与记录)
- 状态模式:(用类表示系统或者对象的状态,能将复杂程序分解开,减少if/else的使用)
- 策略模式:(类中策略实现对象可更改,使用的策略方法为通用抽象方法)
- 模板方法模式:(抽象类中模板方法以抽象类/接口对象抽象方法进行编写)
- 访问者模式:(FiyWeight模式,共享对象,减轻内存压力;注意分清那些该共享,那些不该共享。本质的,不会更改的可作为共享对象,外在的,会更改的不符业务逻辑不做为共享对象)
四、学习设计模式需要注意的:
问题1:部分设计模式在代码实现规范上存在着相同的结构
如结构性设计模式下的装饰模式与代理模式。
原因1:
这是因为设计模式是一种设计思想,是为了解决开发中遇到的设计问题;装饰模式的作用是对装饰对象的功能进行增强,代理模式的作用是对代理对象的功能进行控制。我们在学习设计模式中要侧重学习的是设计模式的语义,而不是其实现形式。