`
laughingchs
  • 浏览: 67837 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

模板方法与策略模式

 
阅读更多

模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

 

注意:在模板方法中,我们可以定义一个骨架方法,用来确定整个算法的骨架和流程;可以在超类中实现一些固定的步骤,然后将一些可变的步骤当作抽象方法,由不同子类来提供不同的实现;同时,对于算法中的一些可选步骤,我们可以通过使用一些钩子方法(一般在父类提供默认实现)来改变算法的一些可选流程或提供默认的实现,由子类决定是否覆盖这些钩子方法。

 

ps:当然,模板方法模式并不一定是通过继承来实现的,例如数组对象Arrays的sort方法就是一种变体,通过类似组合的方式来实现,在数组对象Arrays的sort方法中实现了排序的算法通过和大部分步骤,但具体的元素之间的比较则委托给Comparable接口,进而要求数组元素对象必须实现该接口~——————这也符合模板方法的特征,即由父类(在这是其他类)提供一个算法骨架和流程,而一些具体步骤则依赖于各个具体实现。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics