Template Pattern
The Template Method defines the steps of an algorithm and allows
subclasses to provide the implementation for one or more steps
The Template Method Pattern defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the
algorithm’s structure.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | public abstract class Vehicle { final void haveRide(){ info(); pourFood(); start(); passengers(); gearIt(); run(); stop(); } abstract public void info(); public void pourFood(){ System.out.println("Pouring Food"); } public void start(){ System.out.println("Starting"); } public void stop(){ System.out.println("Stop\n\n"); } abstract public void passengers(); abstract public void gearIt(); abstract public void run(); } ========== public class Bike extends Vehicle{ @Override public void passengers() { System.out.println("2 passengers"); } @Override public void gearIt() { System.out.println("Now gearing"); } @Override public void run() { System.out.println("Running with 80km/hr"); } @Override public void info() { System.out.println("I am Bike."); } } ========== public class Car extends Vehicle{ @Override public void info() { System.out.println("I am Car."); } @Override public void passengers() { System.out.println("5 Passengers."); } @Override public void gearIt() { System.out.println("I am Automatic car.\nI have only one reverse gear."); } @Override public void run() { System.out.println("Running with 140km/hr"); } } ========== public class TemplateFlight { public static void main(String[] args){ Bike bike = new Bike(); bike.haveRide(); Car car = new Car(); car.haveRide(); } } |