栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【设计模式】模板模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【设计模式】模板模式

模板模式和策略模式非常的像
但是好处是不需要去实现多余的方法
举个例子 策略模式是举出方法让实现类全部实现
但是模板模式只需要实现需要的共同方法就好了
像游戏 开始游戏,选择人物,执行游戏,结束游戏
有的不需要选择人物直接开始 这种就可以使用模板模式

代码
abstract class Game {
abstract void startGame();

void choosePerson() {
}

abstract void playGame();
abstract  void gameOver();

//模板方法
public final void play() {
    startGame();
    choosePerson();
    playGame();
    gameOver();
}

}

public class ContraGame extends Game{
@Override void startGame() {
System.out.println(“启动魂斗罗”);
}

@Override void playGame() {
    System.out.println("1P跳河");
}

@Override void gameOver() {
    System.out.println("1P失去生命值,游戏结束");
}

}
public class TMNTGame extends Game{
@Override void startGame() {
System.out.println(“合金弹头开始游戏”);
}

@Override void choosePerson() {
    System.out.println("1P选择猪妹 2P选择刀妹");
}

@Override void playGame() {
    System.out.println("1P中弹");
}

@Override void gameOver() {
    System.out.println("生命值耗尽,游戏结束");
}

}

public class MainThed {
public static void main(String[] args) {
Game game=new ContraGame();
game.play();

    game=new TMNTGame();
    game.play();
}

}

输出:
启动魂斗罗
1P跳河
1P失去生命值,游戏结束

合金弹头开始游戏
1P选择猪妹 2P选择刀妹
1P中弹
生命值耗尽,游戏结束

模板模式优点:

扩展性好,对不变的代码进行封装,对可变的进行扩展;
可维护性好,因为将公共代码进行了提取,使用的时候直接调用即可;

模板模式缺点:

因为每一个不同的实现都需要一个子类来实现,导致类的个数增加,会使系统变得复杂;

使用场景:

有多个子类共有逻辑相同的方法;
重要的、复杂的方法,可以考虑作为模板方法。

注意事项:

为防止恶意操作,一般模板方法都加上 final 关键词!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/940429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号