问答详情
源自:2-3 钩子使子类更灵活

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

提问者:否则悲伤从何而来 2014-08-17 00:12

个回答

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

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

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


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

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