跳至主要內容

设计模式总结

soulballadJava设计模式设计模式约 1129 字大约 4 分钟

设计原则归纳

设计原则一句话归纳目的
开闭原则(OCP) (OPEN-CLOSE)对扩展开放,对修改关闭减少维护带来新的风险
依赖倒置原则(DIP) (Dependence Inversion)高层不应该低层更利于代码结构的升级扩展
单一职责原则(SRP) (Simple Responsibility)一个类只千一件事便于理解,提高代码可读性
接口隔离原则(ISP) (Interface Segregation)一个接口只干一件事功能解耦,高聚合、低耦合
迪米特法则(LOD) (Law of Demeter)不该知道的不要知道只和朋友交流,不和陌生人说话,减少代码臃肿
里氏替换原则(LSP) (Liskov Substitution)子类重写方法功能发生改变,不应该影响父类方法的含义防止继承泛滥
合成复用原则(CARP) (Composite/Aggregate Reuse)尽量使用组合实现代码复用,而不使用继承降低代码耦合

设计模式分类

分类设计模式
创建型工厂方法模式(Factary Method)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、原型模式(Prototype)、建造者模式(Builder)
结构型代理模式(Proxy)、门面模式(Facade)、装饰器模式(Decorator)、享元模式(Flyweight)、组合模式(Composite)、适配器模式(Adapter)、桥接模式(Bridge)
行为型模板方法模式(Template Method)、策略模式(Strategy)、状态模式(State)、备忘录模式(Memento)、中介者模式(Mediator)、解释器模式(Interpreter)、观察者模式(Observer)、访问者模式(Visitor)

设计模式归纳

设计模式一句话归纳目的生活案例框架源码举例
工厂模式(Factory)产品标准化,生产更高效封装创建细节实体工厂LoggerFactory、Calender
单例模式(Singleton)世上只有一个保证独一无二CEOBeanFactory、Runtime
原型模式(Prototype)拔一根猴毛,吹出千万个高效创建对象克隆ArrayList、PrototypeBean
建造者模式(Builder)高配中配与低配,想选哪配就哪配开放个性配置步骤选配StringBuilder
代理模式(Proxy)没有资源没时间,得找媒婆来帮忙增强职责媒婆ProxyFactoryBeany、JdkDynamicAopProxy、CglibAopProxy
门面模式(Facade)打开一扇门,走向全世界统一访问入口前台JdbcUtils、RequestFacade
装饰器模式(Decorator)他大舅他二舅,都是他舅灵活扩展、同宗同源煎饼BufferedReader、InputStream
享元模式(Flyweight)优化资源配置,减少重复浪费共享资源池全国社保联网String、Integer、ObjectPool
组合模式(Composite)人在一起叫团伙,心在一起叫团队统一整体和个体组织架构树HashMap、SqINode
适配器模式(Adapter)适合自己的,才是最好的兼容转换(求同存异)电源适配AdvisorAdapters、HandlerAdapter
桥接模式(Bridge)约定优于配置不允许用继承DriverManager
委派模式(Delegate)这个需求很简单,怎么实现我不管只对结果负责授权委托书ClassLoaders、BeanDefinitionParserDelegate
模板模式(Template)流程全部标准化,需要微调请覆盖逻辑复用把大象装进冰箱的步骤JdbcTemplates、HttpServlet
策略模式(Strategy)条条大道通北京,具体哪条你来定把选择权交给用户选择支付方式Comparator、InstantiationStrategy
责任链模式(Chain of Responsibility)各人自扫门前雪,莫管他人瓦上霜解耦处理逻辑踢皮球FilterChains、Pipeline
迭代器模式(lterator)流水线上坐一天,每个包裹扫一遍统一对集合的访问方式统一刷脸进站lterator
命令模式(Command)运筹之中,决胜千里之外、路见不平一声吼,该出手时就出手解耦请求和处理遥控器Runnable、TestCase
状态模式(State)状态驱动行为,行为决定状态绑定状态和行为订单状态跟踪Lifecycle
备忘录(Memento)给我一剂“后悔药”备份草稿箱StateManageableMessageContext
中介者(Mediator)联系方式我给你,怎么搞定我不管统一管理网状资源朋友圈Timer
解释器模式(Interpreter)我想说“方言”,一切解释权归我所有实现特定语法解析摩斯密码Patterny、ExpressionParser
观察者模式(Observer)到点就通知我解耦观察者与被观察者闹钟ContextLoaderListener
访问者模式(Visitor)横看成岭侧成峰,远近高低各不同解耦数据结构和数据操作KPI考核FileVisitors、BeanDefinitionVisitor

设计模式混用

img

上次编辑于:
贡献者: soulballad