Template Method

Template Method 模式

 

意图  定义一个操作中的算法顾家,将一些步骤推迟到子类中实现。可以不改变算法的结构而重定义该算法的步骤。

问题 要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上实现可能不同

 

模版模式

模版模式 重构中的Form Template Method 有异曲同工之妙,首先抽象出实现中的相同部分,放在模版方法中 ,将不同部分定义为抽象方法,分别在子类中实现,但是模板方法的算法骨架相同。

1)模板模式和策略模式都是“开-闭原则”的最佳教科书,因为他们可以随时扩展新的算法(部分或者整体)

2)他们都是解决算法经常改变的问题(比如商场促销手段、权限判断方法等等)

 

他们有什么不同?

呵呵,细心看到应该已经发现,我强调了很多次,部分与整体!这个就是他们的“要害”

模板模式传说是很早以前OO设计就出现的方法,那时候扩展软件的方法就是“继承”,然后添加新功能

(扯远了),模板模式就是让父类留出需要经常变动的“地方”,然后让子类去填补变动的地方

但是它是不能改变整个算法的“框架”的,能变动的只是预留的部分而已,所以是部分的修改!

而策略模式不同,因为它是面向接口的!持有的是一个接口的引用,它的“算法框架”可以全部放在

实现策略接口的类里边,这样,程序员就能控制整个的算法

 

什么时候用什么模式?

这个需要看需求,如果设计者不想让别人乱动“主要的逻辑”,只开放一些局部功能,那么模板模式

是正确的。假如设计者需要给别人很大的灵活性,那么策略模式是首选。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值