Provide Template Code, but leave implementation to the concrete class. The template method pattern is a very good example when to make a method as final.
Template method design pattern is to define an algorithm as skeleton of operations and leave the details to be implemented by the child classes. The overall structure and sequence of the algorithm is preserved by the parent class.
http://www.oodesign.com/template-method-pattern.html
http://javapapers.com/design-patterns/template-method-design-pattern/
Template method design pattern is to define an algorithm as skeleton of operations and leave the details to be implemented by the child classes. The overall structure and sequence of the algorithm is preserved by the parent class.
http://www.oodesign.com/template-method-pattern.html
http://javapapers.com/design-patterns/template-method-design-pattern/
public abstract class OrderProcessTemplate { public boolean isGift; public abstract void doSelect(); public abstract void doPayment(); public final void giftWrap() { System.out.println("Gift wrap done."); } public abstract void doDelivery(); public final void processOrder() { doSelect(); doPayment(); if (isGift) { giftWrap(); } doDelivery(); } }
public class NetOrder extends OrderProcessTemplate { @Override public void doSelect() { System.out.println("Item added to online shopping cart,"); System.out.println("Get gift wrap preference,"); System.out.println("Get delivery address."); } @Override public void doPayment() { System.out.println("Online Payment through Netbanking/Cards."); } @Override public void doDelivery() { System.out.println("Ship the item through post to delivery address"); } }
public class StoreOrder extends OrderProcessTemplate { @Override public void doSelect() { System.out.println("Customer chooses the item from shelf."); } @Override public void doPayment() { System.out.println("Pays at counter through cash/POS"); } @Override public void doDelivery() { System.out.println("Item deliverd to in delivery counter."); } }
No comments:
Post a Comment