设计模式分类
创建型:
单例模式(Singleton)、原型模式(Prototype)、建造者(Builder)
工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)
结构型:
适配器模式(Adapter)、桥接模式(Bridge)
享元模式(Flyweight)、组合模式(Composite)
代理模式(Proxy)、门面模式(Facade)、装饰器模式(Decorator)
行为型:
模板方法模式(Template Method)、策略模式(Strategy)
迭代器模式(Iterator)、备忘录模式(Memmento)、访问者模式(Visitor)
中介者模式(Mediator)、解释器模式(Interpreter)、观察者模式(Observer)
命令模式(Command)、状态模式(State)、责任链模式(Chain of Responsibility)
设计模式对比及编程思想总结
| 设计模式 | 目的 | 框架源码 |
| 创建型 | ||
| 工厂模式 (Factory) |
封装创建细节 | LoggerFactory |
| 单例模式 (Singleton) |
保证独一无二 | Runtime BeanFactory |
| 原型模式 (Prototype) |
高效创建对象 | ArrayList PrototypeBean |
| 建造者(Builder) | 开放个性配置步骤 | StringBuilderBeanDefinitionBuilder |
| 结构型 | ||
| 代理 (Proxy) |
增强职责 | ProxyFactoryBeanJdkDynamicAopProxy CglibAopProxy |
| 门面模式(Facade) | 统一访问入口 | JdbcUtil |
| 装饰器(Decorator) | 灵活扩展 同宗同源 |
BufferedReader InputStream |
| 享元模式(Flyweight) | 共享资源池 | String、Integer |
| 组合 (Composite) |
统一整体和个体 | HashMap、SqlNode |
| 适配器 (Adapter) |
兼容转换 | HandlerAdapter |
| 桥接(Bridge) | 不允许使用继承 | DriverManager |
| 行为型 | ||
| 委派(Delegate) | 只对结果负责 | ClassLoaderBeandefinitionParserDelegate |
| 模板(Template) | 逻辑复用 | JdbcTemplate |
| 策略(Strategy) | 选择权交于用户 | ComparatorInstantiationStrategy |
| 责任链(Chain) | 解耦处理逻辑 | FilterChainPipeline |
| 迭代器 (Iterator) |
统一集合访问方式 | Iterater |
| 命令 (Command) |
解耦请求与处理 | Runnable |
| 状态(State) | 绑定状态与行为 | Lifecycle |
| 备忘录(Memento) | 备份 | ? |
| 中介者(Mediator) | 统一管理网状资源 | Timer |
| 解释器(Interpreter) | 特定语法解析 | Pattern |
| 观察者(Observer) | 解耦观察者与被观察者 | ContextLoaderListener |
| 访问者(Visitor) | 结构数据结构 和数据操作 |
BeanDefinitionVisitor |
原文:https://blog.51cto.com/rundreams/3309569