美文网首页
各种设计模式总结和对比

各种设计模式总结和对比

作者: vincent浩哥 | 来源:发表于2019-10-20 20:49 被阅读0次

模板方法模式和策略模式

1、模板方法和策略模式都有封装算法
2、策略模式是使不同算法可以相互替换,且不影响客户端应用层的使用。
3、模板方法是针对定义一个算法的流程,将一些有细微差异的部分交给子类实现。
4、模板方法模式不能改变算法流程,策略模式可以改变算法流程且可替换。策略模式通常用来代替 if...else...等条件分支语句。

模板方法模式和工厂方法模式

1.工厂方法是模板方法的一种特殊实现。
2.对于工厂方法模式方法而言,相当于只有一个步骤的模板方法模式。这一个步骤交给子类去实现。
而模板方法,将定义好的方法交给子类实现,同时定义好的方法又属于父类的某一个步骤且不可变更

策略模式和委派模式

1、策略模式是委派模式内部的一种实现形式,策略模式关注的结果是否能相互替代
2、委派模式更关注分发和调度的过程。

策略模式和工厂模式

1、工厂模式包含工厂方法模式和抽象工厂模式是创建型模式,策略模式属于行为型模式
2、工厂模式主要目的是封装好创建逻辑(new),策略模式接收工厂创建好的对象,从而实现不同的行为(invoke)。

单例模式和工厂模式

实际业务代码中,通常会把工厂类设计为单例。

装饰者模式和静态代理模式

1、装饰者模式关注点在于给对象动态添加方法(is-a关系),而代理更加注重控制对对象的访问(has-a关系)。
2、代理模式通常会在代理类中创建被代理对象的实例,而装饰者模式通常把被装饰者作为构造参数

装饰者模式和适配器模式

1、装饰者模式和适配器模式都是属于包装器模式(Wrapper Pattern)
2、装饰者模式是一种非常特别的适配器模式 ,适配器模式没有层级关系,装饰器模式有层级关系
3、装饰者模式:装饰者和被装饰者都实现同一个接口,主要目的是为了扩展之后依旧保留 OOP 关系
适配器模式:适配器和被适配者没有必然的联系,通常是采用继承或代理的形式进行包装
4、装饰者模式注重覆盖、扩展 ,适配器模式注重兼容、转换
5、装饰者模式从设计的角度来讲是前置考虑,而适配器模式是后置考虑

适配器模式和静态代理模式

适配器可以结合静态代理来实现,保存被适配对象的引用,但不是唯一的实现方式。

适配器模式和策略模式

在适配业务复杂的情况下,利用策略模式优化动态适配逻辑。

具体代表性的架构就是把设计模式用的淋漓尽致,例如Spring、Mybatis

Spring中常用到的设计模式

工厂模式(只对结果负责,封装创建过程):BeanFactory、Calendar

单例模式(保证独一无二,不会重复出现):ApplicationContext、Calendar

原型模式(以一个对象为原型复制千万个一样的):ArrayList、PrototypeBean

代理模式(找人办事,增强职责):ProxyFactoryBean、JdkDynamicAopProxy、CglibAopProxy

委派模式(自己不干活,他任务交给他人完成,只收集结果,功劳算我的):DispatcherServlet、BeanDefinitionParserDelegate

策略模式(用户多种选择,但是结果都是一样的):InstantiationStrategy

模版模式(流程已经标准化了,可以实现自己的定制):JdbcTemplate、HttpServlet

适配器模式(主要是兼容已有的产品):AdvisorAdapter、HandlerAdapter

装饰器模式(主要在在已有的产品上锦上添花):OutputSteam
、InputStream、BufferedReader

观察者模式(任务完成时通知):ContextLoaderListener

Mybaits中用到的设计模式

工厂模式:SqlSessionFactory、ObjectFactory、MapperProxyFactory

建造者模式:XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder

单例模式:SqlSessionFactory、Configuration、ErrorContext

代理模式:MapperProxy、ProxyFactory(CGLIB、JAVASSIT)、Plugin、SqlSessionInterceptor、PooledConnector、ConnectionLogger、StatementLogger

适配器模式:logging

模版方法模式:BaseExecutor、SimpleExecutor、BatchExecutor、ReuseExecutor

装饰器模式:PerpetualCache、Executor

责任链模式:InterceptorChain

相关文章

网友评论

      本文标题:各种设计模式总结和对比

      本文链接:https://www.haomeiwen.com/subject/ofxiuctx.html