Home  >  Article  >  Java  >  Template

Template

Linda Hamilton
Linda HamiltonOriginal
2024-09-22 22:16:02604browse

Template

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

The above is the detailed content of Template. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:ProxyNext article:Proxy