目录
一、创建型
二、结构型
1、适配器模式:电源适配器适配不同电压
公司内部,类和方法的命名应该有规范,最好前期就设计好,然后如果真的如你所说,接口不相同时,首先不应该考虑用适配器,而是应该考虑通过重构统一接口。
2、适配器模式、代理模式、外观模式的区别
总结:
适配器模式:因为新旧接口不一致导致出现了客户端无法得到满足的问题,但是,由于旧的接口是不能被完全重构掉的,因为我们还想使用实现了这个接口的一些服务。那么为了使用以前实现旧接口的服务,我们就应该把新的接口转换成旧接口;实现这个转换的类就是抽象意义的转换器。
外观模式:外观模式提供简化接口的能力,让使用者与接口内部的细节解耦,符合“最小知道原则”。
代理模式:代理提供的接口和原本的接口是一样的,代理模式的作用是不把实现直接暴露给client,而是通过代理这个层,代理能够做一些处理。
3、桥接模式
桥接模式就是在一个物体可以从多个维度变化时,那么把这种多角度分类给分离出来,让他们独立变化,减少他们之间耦合。
4、享元模式:缓存场景
三、行为型
1、策略模式 & 状态模式的区别
策略模式:加减乘除算法封装在不同子类中
状态模式:状态间存在切换关系,一个状态结束会自动切换到下一个状态
2、备忘录模式
决策框架挂起后,将申请信息作为备忘录存在数据库,然后待重新发起后继续执行。
3、责任链模式
书店促销,满两本打8折,三本打7折,可以将不同的打折策略作为一个个的责任链节点,把客户买的书分别由各个节点进行计算,得出最优惠组合。
4、命令模式
点烧烤的例子
https://www.cnblogs.com/ssslinppp/p/5555299.html
(1)系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。
(2)系统需要在不同的时间指定请求、将请求排队和执行请求。
(3)系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。
(4)系统需要将一组操作组合在一起,即支持宏命令。
5、解释器模式:应用较少
6、迭代器模式
7、中介者模式
一个系统只暴露一个服务,比如三方平台暴露给商户的只有一个接口。
系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。
8、观察者模式
9、空对象模式
在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
10、模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
例:web开发中,jsp页面框架是固定的,只是里面的参数是变化的,类似这种模式。
11、访问者模式
例:见大话设计模式