常用设计模式对比

23种设计模式:

分类设计模式
创建型工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、 建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)
结构型适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、 装饰器模式(Decorator)、门面模式(Facade)、享元模式(Flyweight)、 代理模式(Proxy)
行为型解释器模式(Interpreter)、模板方法模式(Template Method)、 责任链模式(Chain of Responsibility)、命令模式(Command)、 迭代器模式(Iterator)、调解者模式(Mediator)、备忘录模式(Memento)、 观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、 访问者模式(Visitor)
设计模式一句话归纳举例
工厂模式(Factory)只对结果负责,封装创建过程。BeanFactory、Calender
单例模式(Singleton)保证独一无二。ApplicationContext、Calender
原型模式(Prototype)深拷贝和浅拷贝ArrayList、PrototypeBean
代理模式(Proxy)找人办事,增强职责。ProxyFactoryBean、 JdkDynamicAopProxy、CglibAopProxy
委派模式(Delegate)干活算你的(普通员工),功 劳算我的(项目经理)。DispatcherServlet、 BeanDefinitionParserDelegate
策略模式(Strategy)用户选择,结果统一。InstantiationStrategy
模板模式(Template)流程标准化,自己实现定制。JdbcTemplate、HttpServlet
适配器模式(Adapter)兼容转换头。AdvisorAdapter、HandlerAdapter
装饰器模式(Decorator)包装,同宗同源。BufferedReader、InputStream、OutputStream、 HttpHeadResponseDecorator
观察者模式(Observer)任务完成时通知。ContextLoaderListener

设计模式之间的关联关系和对比

  • 单例模式和工厂模式

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

  • 策略模式和工厂模式

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

  • 策略模式和委派模式

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

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

    工厂方法是模板方法的一种特殊实现。对于工厂方法模式的 create()方法而言,相当于只有一个步骤的模板方法模式。这一个步 骤交给子类去实现。而模板方法呢,将 needHomework()方法和 checkHomework()方 法交给子类实现,needHomework()方法和 checkHomework()方法又属于父类的某一 个步骤且不可变更。

  • 模板方法模式和策略模式

    1、模板方法和策略模式都有封装算法。
    2、策略模式是使不同算法可以相互替换,且不影响客户端应用层的使用。
    3、模板方法是针对定义一个算法的流程,将一些有细微差异的部分交给子类实现。
    4、模板方法模式不能改变算法流程,策略模式可以改变算法流程且可替换。策略模式通 常用来代替 if…else…等条件分支语句。1、WechatPay、JDPay、AliPay 是交给用户选择且相互替代解决方案。而 JdbcTemplate 下面的子类是不能相互代替的。 2、模板方法模式案例中 的 mapRow()方法一定要在获得 ResultSet 之后方可调用,否则没有意义。

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

    1、装饰者模式关注点在于给对象动态添加方法,而代理更加注重控制对对象的访问。
    2、代理模式通常会在代理类中创建被代理对象的实例,而装饰者模式通常把被装饰者作 为构造参数。装饰者和代理者虽然都持有对方引用,但逻辑处理重心是不一样的。

  • 装饰者模式和适配器模式

    1、装饰者模式和适配器模式都是属于包装器模式(Wrapper Pattern)。
    2、装饰者模式可以实现被装饰者与相同的接口或者继承被装饰者作为它的子类,而适配 器和被适配者可以实现不同的接口。装饰者和适配器都是对 SiginService 的包装和扩展,属于装饰器模式的实现形式。但是 装饰者需要满足 OOP 的 is-a 关系,我们也讲过煎饼的例子,不管如何包装都有共同的父类。而适配器主要解决兼容问题,不一定要统一父类。

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

    适配器可以结合静态代理来实现,保存被适配对象的引用,但不是唯一的实现方式。
    适配器模式和策略模式
    在适配业务复杂的情况下,利用策略模式优化动态适配逻辑。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmineWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值