The Template Method pattern – hooks
A hook is a method that is declared in the abstract class. It is generally given a default implementation. The idea behind hooks is to give a subclass the ability to hook into the algorithm whenever needed. It's not imperative for the subclass to use hooks and it can easily ignore this.
For example, in the beverage example, we can add a simple hook to see if condiments need to be served along with tea or coffee based on the wish of the customer.
Another example of hook can be in the case of the travel agency example. Now, if we have a few elderly tourists, they may not want to go out on all three days of the trip as they may get tired easily. In this case, we can develop a hook that will ensure day2
is lightly loaded, which means that they can go to a few nearby places and be back with the plan of day3
.
Basically, we use abstract methods when the subclass must provide the implementation, and hook is used when it is optional for the subclass to implement it...