美文网首页
模板方法

模板方法

作者: 2d899c5242bd | 来源:发表于2017-02-20 20:19 被阅读22次

定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以重定义算法的某些特定步骤而不改变算法的结构。

模板方法模式中的控制流程是倒转的,因为父类的模板方法调用其子类的操作,而不是子类调用父类的操作。


制作三明治一般三明治和具体三明治之间的静态图

Anysandwich 父类中的标准步骤代表了制作三明治的算法。算法实现于make 方法之中,并预留出一些操作,由子类做具体实现。所以子类其实不必了解算法的细节,同时父类也不必了解子类所提供的具体操作细节。
模板方法与委托方法的使用场景

  1. 模板父类定义一个一般算法,但缺少某些特定/可选的信息或算法,它通过这些缺少的信息或算法起到一个算法食谱的作用,缺少的信息由子类通过继承来提供
  2. 委托算法由任何对象通过对象组合来提供

保证模板方法正常工作

抛出异常

向模板方法增加额外的步骤

必要时子类可以扩展的父类中的方法叫做“钩子”,默认的钩子方法通常什么都不做,而且钩子方法对子类来说是可选的。

在Cocoa Touch 框架中的使用

- (void)drawRect:(CGRect)rect 

这个默认实现什么也不做。uiview 的子类如果真的需要绘制自己的视图,就重载自己的方法。所以这个方法就是钩子方法。

其他模板方法

这些是纯钩子方法

相关文章

网友评论

      本文标题:模板方法

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