模板模式
在模板模式(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();
}
}
- 输出
标签:斗地主,void,System,模式,Override,println,模板,out From: https://www.cnblogs.com/kouhao/p/17503108.html初始化王者荣耀
登录化王者荣耀账户
开始玩游戏
退出化王者荣耀账户
结束王者荣耀初始化斗地主游戏
登录化斗地主账户
开始玩游戏
退出斗地主账户
结束斗地主游戏