Template Method模式和Strategy模式

Template Method模式和Strategy模式都可以分离通用的算法和具体的上下文,所解决的问题是类似的,但是实现的方法不同,一个是用的继承,一个是用的委托。
我们先来看一下Template 的结构图:


Template Method模式实际上就是利用面向对象中多态的概念实现算法实现细节和高层接口的松耦合。Template Method模式展示了面向对象编程中诸多经典重用形式中的一种。其中通用算法被放置到基类中,并且通过继承在不同的具体上下文中实现该共同算法。但由于继承是一种强约束性的条件,派生类不可避免地要和它们的基类绑定到一起。
Strategy模式使用了一种非常不同的方法来倒置通用算法和具体时间之间的依赖关系。当Template Method模式和Strategy模式进行比较时,我们尽量多用组合的方式少用继承。Strategy模式的结构图:


不是将通用的算法放到基类中而是放到ApplicationRunner的具体类中。而把通用算法必须要调用的抽象方法定义在一个名为Application的接口中,我们的ApplicationRunner只依赖于Application接口,具体实现在ftocStrategy这个具体类中。这个设计很符合依赖倒置原则,降低了基类和派生类之间的耦合度。
但是我们在选择用哪个设计模式的时候要慎重,切记设计过度。一般比较简单的情况用Template Method模式已经足够。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值