i am still reading factory patterns on head first. We have an pizzaStore example and trying to localize our pizzaStore class to let franchies freedom to have their own regional style.
To do this, we changed to pizzaStore class to abstract class, and moved our factory object to “abstract createPizza(String type);” method. It is ok, i understood why.
If you look at the picture, i underlined the sentence. What it means ? ” if we really want to enforce, we could make the method final ? “

The point is that subclasses are supposed to implement
createPizza, but are required by contract to not overrideorderPizza, just call it. This policy can be enforced by making the method final.When you design a class for inheritance, you must generally take care of all the details involved in how exactly the class is supposed to be extended.