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 …


This content originally appeared on DEV Community and was authored by Prashant Mishra

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


This content originally appeared on DEV Community and was authored by Prashant Mishra


Print Share Comment Cite Upload Translate Updates
APA

Prashant Mishra | Sciencx (2024-09-22T12:52:46+00:00) Template. Retrieved from https://www.scien.cx/2024/09/22/template-2/

MLA
" » Template." Prashant Mishra | Sciencx - Sunday September 22, 2024, https://www.scien.cx/2024/09/22/template-2/
HARVARD
Prashant Mishra | Sciencx Sunday September 22, 2024 » Template., viewed ,<https://www.scien.cx/2024/09/22/template-2/>
VANCOUVER
Prashant Mishra | Sciencx - » Template. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/22/template-2/
CHICAGO
" » Template." Prashant Mishra | Sciencx - Accessed . https://www.scien.cx/2024/09/22/template-2/
IEEE
" » Template." Prashant Mishra | Sciencx [Online]. Available: https://www.scien.cx/2024/09/22/template-2/. [Accessed: ]
rf:citation
» Template | Prashant Mishra | Sciencx | https://www.scien.cx/2024/09/22/template-2/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.