The template is one of the behavioral design patterns, an abstract class defines a set of ways/templates to execute its methods.
Its subclasses can override/implement these methods but the invocation is to be in the same way as defined by an abstract class
Let's understand this with an example:
Key concepts
Template: An abstract class defining the structure/way/template of the algorithm
Concrete Implementation: ConcreteImplementation of Template
Client: Client that will make use of this Template
public abstract class GameTemplate{ //these below methods can be overridden based on the type of game public abstract void initialize(); public abstract void startPlay(); public abstract void endPlay(); //All the subclasses must use this same method to play the game i.e. following the same template present in this method, //Hence it is declared as final. public final void play(){ initialize(); startPlay(); endPlay(); } } public class Cricket extends GameTemplate{ @Override public void initialize(){ System.out.println("Cricket has been initialized"); } @Override public void startPlay(){ System.out.println("Cricket game has been started"); } @Override public void endPlay(){ System.out.println("Cricket game has ended"); } } public class Football extends GameTemplate{ @Override public void initialize(){ System.out.println("Football has been initialized"); } @Override public void startPlay(){ System.out.println("Football game has been started"); } @Override public void endPlay(){ System.out.println("Football game has ended"); } } public class Main{ public static void main(String args[]){ //Create a football game object GameTemplate football = new Football(); football.play();// play() will strictly follow the sequence of method execution defined in the final play() method GameTemplate cricket = new Cricket(); cricket.play(); } }
Output:
Football has been initialized Football game has been started Football game has ended Cricket has been initialized Cricket game has been started Cricket game has ended
note: The code follows all the design principles like LSP, ISP, SRP, OCP
以上是Template的详细内容。更多信息请关注PHP中文网其他相关文章!