设计模式—模板模式
模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。
它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
这种类型的设计模式属于行为型模式。
适用场景:一些固定化流程,比如JdbcTemplate.
思考问题:为什么用抽象类而不用接口呢?
模板模式小例子:
- 模板抽象类
/**
 * 抽象模板类
 *
 * @author admin
 */
public abstract class AbstractPlayGameTemplate {
    // 游戏初始化
    abstract void init();
    // 登录账号
    abstract void login();
    //退出登录
    abstract void loginOut();
    // 退出游戏
    abstract void exit();
    public void play() {
        init();
        login();
        System.out.println("开始玩游戏");
        loginOut();
        exit();
    }
}
- 继承抽象类例子1
/**
 * 玩王者荣耀
 *
 * @author admin
 */
public class GloryOfKingsPlay extends AbstractPlayGameTemplate {
    @Override
    void init() {
        System.out.println("初始化王者荣耀");
    }
    @Override
    void login() {
        System.out.println("登录化王者荣耀账户");
    }
    @Override
    void loginOut() {
        System.out.println("退出化王者荣耀账户");
    }
    @Override
    void exit() {
        System.out.println("结束王者荣耀");
    }
}
- 继承抽象类例子2
/**
 * 玩斗地主
 *
 * @author admin
 */
public class DoudizuPlay extends AbstractPlayGameTemplate {
    @Override
    void init() {
        System.out.println("初始化斗地主游戏");
    }
    @Override
    void login() {
        System.out.println("登录化斗地主账户");
    }
    @Override
    void loginOut() {
        System.out.println("退出斗地主账户");
    }
    @Override
    void exit() {
        System.out.println("结束斗地主游戏");
    }
}
- 客户端
/**
 * 客户端
 *
 * @author admin
 */
public class Client {
    public static void main(String[] args) {
        new GloryOfKingsPlay().play();
        System.out.println("\r\n");
        new DoudizuPlay().play();
    }
}
- 输出
初始化王者荣耀
登录化王者荣耀账户
开始玩游戏
退出化王者荣耀账户
结束王者荣耀初始化斗地主游戏
登录化斗地主账户
开始玩游戏
退出斗地主账户
结束斗地主游戏
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号