23 Design Patterns ------- Template Pattern

package demo;
/**
 * 2. Template mode
 * Two roles:
 * 1. Abstract template
 * 1. Abstract method: need to be implemented by subclasses, and subclasses must implement
 * 2. Callback method: extension method, which is an empty method , subclasses can be overridden or not
 * 3. Private final method: not overridable
 * 4. Template method: This method defines the execution order and logic of each method
 * 2. Concrete
 * needs to implement abstraction Abstract method in template
 * 
 *
 */


 abstract class ConcreteTemplate {
    /**
     * Template method
     */
    public void templateMethod(){
        //Call the basic method
        abstractMethod();
        hookMethod();
        concreteMethod();
    }
    /**
     * Basic method declaration (implemented by subclasses)
     */
    protected abstract void abstractMethod();
    /**
     * Basic method (empty method)
     */
    protected void hookMethod(){}
    /**
     * Basic method (already implemented)
     * /
    private final void concreteMethod(){
        //business-related code
    }
}


public class ConcreteTemplate extends ConcreteTemplate{
    //basic method implementation
    @Override
    public void abstractMethod() {
        //business-related code
    }
    //override parent class Method
    @Override
    public void hookMethod() {
        //Business related code
    }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325723823&siteId=291194637