来源:2-3 钩子使子类更灵活

否则悲伤从何而来

2014-08-17 00:12

钩子函数就是判断是否执行的一个辅助函数,那在实现的时候,里面的加柠檬方法是不是还是必须重写出来,只是不写实现的代码(方法空)?

写回答 关注

2回答

  • Arthur
    2014-08-17 10:58:24

    这里你不妨继续深入一下, 考虑如下场景:通过询问的方式来决定是否加入调料。比如,通过在命令行显示“是否加入调料?(Y/N)", 等待用户的反馈。然后返回true或false。然后你会发现子类对算法的实现具有了更大的灵活性,你的子类可以应对不用的场景,用户想喝茶,是否加入调料都可以轻松满足。正所谓加或不加,茶就在那里,不多不少。

    总之,通过钩子函数我们合理的扩展了算法的使用场景,提升了代码弹性和可复用性,这就是我们使用模式的终极目的。


  • one_the_other
    2016-01-24 22:40:57

    是的,一般情况下(即你的实现类不是抽象类)是必须的。因为父类的加调料方法是抽象方法(abstract修饰)。

模式的秘密---模板方法模式

封装算法框架的模板方法模式,用案例告诉你模板方法模式的强大

32230 学习 · 65 问题

查看课程

相似问题

回答 3

回答 1

回答 2