学点设计模式,盘点Spring等源码中与设计模式的那些事,给所有的设计模式来个大总结
- 这篇没有什么技巧可言,前边都仔细看过了,这里总结一下
创建型模式
-
单例(Singleton)模式: 保证只有一个对象
-
原型(Prototype)模式: 快速克隆一个自己
-
工厂(Factory)模式:创建对象最佳方式,不必关心对象细节
-
工厂方法(FactoryMethod)模式:
- 简单工厂(一个方法): if-else判断创造对象。缺点是产品线单一
- 工厂方法(很多方法): 每个产品一个方法
-
抽象工厂(AbstractFactory)模式:很多工厂+很多方法;
-
-
建造者(Builder)模式: 屏蔽过程而不屏蔽细节,如果是必须的细节,就使用构造器
结构型模式
-
适配器(Adapter)模式: 两个不兼容接口之间适配的桥梁
-
桥接(Bridge)模式: 连接同一个东西的两个不同维度,相同功能抽象化与实现化解耦,抽象与实现可以独立升级。
-
代理(Proxy)模式: 动态代理 + cglib
-
装饰(Decorator)模式:向一个现有的对象添加新的功能,同时又不改变其结构
-
外观、门面(Facade)模式: 把多个类的多个方法,合成到一个类里面引用,隐藏系统的复杂性
-
享元(Flyweight)模式:将原对象通过池技术共享
-
组合(Composite)模式: a里面属性有b(a)对象就是组合
行为型模式
-
模板方法(Template Method)模式: 父类定义了一个大方法,里面调用了一堆小方法步骤。小方法步骤子类实现即可
-
策略(Strategy)模式:每一种算法封装成一个策略,根据不同情况使用不同算法策略直接调用
-
命令(Command)模式:请求封装成对象,请求与执行分隔开(Controller、Service、Dao)
-
职责链(Chain of Responsibility)模式:所有处理者封装为链式结构,依次调用(Filter、维护链条+游标+递归)
-
状态(State)模式:和策略很像,状态要维护状态流转。
-
观察者(Observer)模式:把所有观察者List起来,然后foreach,状态变化通知所有观察者
-
中介者(Mediator)模式:取消类/对象的直接调用关系,所有类都引入一个类的对象,通过这一个对象调用
-
迭代器(Iterator)模式:自定义遍历算法。自己本类的迭代器遍历自己本类里面的集合
-
访问者(Visitor)模式:分离对象结构与元素的执行算法
-
备忘录(Memento)模式:把复杂对象的关键属性抽取出来进行保存
-
解释器(Interpreter)模式:定义语法解析规则语法分析,大解析器组合了很多小解释器,进行语法解析