一句话描述设计模式
最近在看设计模式,其描述抽象程度令人欲罢不能,始终不得其意。于是尝试用一句话总结了一下,常规的就不说了,只是举了个例子。
单例模式
- Spring中的单例bean使用了双重锁机制
工厂模式
- Spring中的BeanFactory是简单工厂模式
- BeanFactory是工厂方法模式(工厂父类,工厂子类,公共接口)
原型模式
**它通过复制一个已有的实例(即原型对象)来创建一个和原型对象相同的新对象。** 当创建对象的过程比较复杂时,使用该模式快速创建对象。
实现方式:
- 浅克隆:实现
Cloneable
接口, - 深克隆:实现
serializable
接口
建造者模式
将对象的构建和表示分离,分步骤创建复杂对象,同样的过程可以创建不同的对象。
StringBuiler
和StringBuffer
- Mybatis中的
SqlSessionFactoryBuilder
桥接模式
桥接模式就像是把一个大玩具拆成两部分:
- 形状部分:比如车子、船或飞机的样子。
- 颜色部分:比如红色、蓝色或绿色。
这样做的好处是,我们可以随意组合不同的形状和颜色,而不用为每种组合都做一个全新的玩具。这让制作玩具变得更简单,也让我们可以轻松创造出更多种类的玩具。
这种方法帮助程序员更容易写出灵活的程序,就像我们可以轻松制作各种不同的玩具一样。
组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。
组合模式就像是一个树形积木游戏。
想象一下,你有很多积木,可以把它们组合在一起。你可以把小积木连接成一个大积木,然后再把这个大积木和其他积木连接,形成更大的结构。
这种模式让你可以用同样的方式对待单个积木和由多个积木组成的大结构。不管是一个积木还是一堆积木,你都可以移动它,数它,或者对它做其他操作。
这样做的好处是,你可以轻松地创建复杂的结构,同时还能简单地处理它们,就像处理单个积木一样容易。
享元模式:通过共享所有对象的相同状态,减少单个对象的大小。
代理模式:在不改变原对象的前提下,控制对该对象的访问,允许在前后进行处理。
装饰器模式:在不改变原对象的前提下,增加新的功能。
外观模式:给复杂的对象提供一个简单的操作接口,用户只需要关注功能而不需要关注具体实现。
责任链模式:行为设计模式,将请求沿着处理器链进行发送,每个处理器可以处理也可以不处理。filterCharin.
命令模式:将请求转换为包含与请求所有相关信息的独立对象。相当于购物清单。
迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。
中介者模式:减少对象之间的直接访问,对象和中介者交互,然后事情由中介者负责处理。
备忘录模式:在不暴露对象实现细节的情况下,保存和恢复之前的状态。
观察者模式:可在对象事件发生时通知多个 “观察” 该对象的其他对象。类似于新闻发布会。
状态模式:当对象状态发生改变时,改变其行为。类似于自动机
策略模式:完成某个行为的多种方式,可以互相替换。地图导航中的步行、驾车、公共交通。
模版方法模式:父类中定义算法框架,子类在不修改框架的基础上重写特定细节。AQS
访问者模式:分离算法和数据结构,对同样的东西做不同的事。例如messageConverter
,将消息转换成不同格式。