The façade deals with the interface, not the implementation. Its purpose is to hide internal complexity behind a single interface that looks just outside. In the example from your question, the facade hides four classes (Order, OrderLine, Address, BasketItem) behind a single method.
The template method refers to the implementation. Its purpose is to extract a general algorithm from several that differ only in "filling in the gaps." The template method in the superclass implements the general algorithm, and each subclass "fills the spaces" in its own way.
So why does the author not use the template template here?
It would be wise to make a placeOrder template method if there were several similar versions of the operation. Perhaps several methods like placePhoneOrder , placeInternetOrder , placeManuallyEnteredOrder can be reorganized into one placeOrder template with some subclasses that implement only specific differences {phone, internet, manual}.
Rafał dowgird
source share