GOF提出的设计模式主要基于以下面向对象设计原则:
- 对接口编程而不是对实现编程
- 优先使用对象组合而不是继承
设计模式可以分为三大类:
- 创建型模式
- 结构型模式
- 行为型模式
创建型模式:
- 工厂模式
- 抽象工厂模式
- 单列模式
- 建造者模式
- 原型模式
结构型模式:
- 适配器模式
- 桥接模式
- 过滤器模式
- 组合模式
- 装饰器模式
- 外观模式
- 享元模式
- 代理模式
行为型模式
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 空对象模式
- 策略模式
- 模板模式
- 访问者模式
设计模式六大原则(标准说法)
- 开闭原则
对扩展开放,对修改关闭
- 里氏代换原则
任何基类可以出现的地方,子类一定可以出现。
- 依赖倒转原则
针对接口编程,依赖于抽象而不依赖于具体实现
- 接口隔离原则
使用多个隔离的接口,比使用单个接口要好,降低类的耦合度,强调降低依赖,降低耦合。
- 最少知道原则
一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
- 合成复用原则
尽量使用合成/聚合的方式,而不是使用继承。
设计原则(自己语言总结)
- 找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。
- 针对接口编程,而不是针对实现编程。
- 多用组合,少用继承。
- 为了交互对象之间的松耦合设计而努力。
- 类应该对扩展开放,对修改关闭。
- 要依赖抽象,不要依赖具体类。
1、策略模式
策略模式定义了算法簇(也可以说是一组行为)让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
2、观察者模式
观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所以依赖者都可以接收到通知。
主题和观察者之间松耦合。
3、装饰者模式
(给爱用继承的人一个全新的设计眼界)
装饰者模式动态的将责任附加到对象上。
装饰者和被装饰者(组件)要有相同的接口,因为装饰者必须能取代被装饰者
4、工厂模式
我们不应该针对实现编程,但是当我们使用new时,不正是在针对实现编程吗?
工厂方式模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
5、抽象工厂模式
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
6、单件模式
确保一个类只有一个实例,并提供一个全局访问点。
7、命令模式
命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。