Java中常用的设计模式之模板模式详解
目录
- 优点
- 缺点
- 使用场景
- 一、实现方式
- 1、游戏抽象类
- 2、LOL游戏类
- 3、CF游戏类
- 二、测试
- 总结
优点 【Java中常用的设计模式之模板模式详解】封装不变部分,扩展可变部分。
提取公共代码,便于维护。
行为由父类控制,子类实现。
缺点 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
使用场景 1.有多个子类共有的方法,且逻辑相同。
2.重要的、复杂的方法,可以考虑作为模板方法。
一、实现方式 假设一个场景,我们在玩游戏的时候,都需要初始化加载游戏,然后开始游戏,最后结束游戏,这像是一套模板一样的操作,但是具体的实现方法却不同,例如:LOL 游戏与 CF 游戏的加载资源肯定不同,游戏的内容也不同。
1、游戏抽象类
package com.asurplus.common.template; /** * 游戏抽象类 */public abstract class Game {// 初始化游戏abstract void init(); // 开始游戏abstract void start(); // 结束游戏abstract void end(); // 模板public final void play() {// 初始化游戏init(); // 开始游戏start(); // 结束游戏end(); }}
2、LOL游戏类
package com.asurplus.common.template; import lombok.extern.slf4j.Slf4j; /** * LOL游戏 */@Slf4jpublic class LolGame extends Game {@Overridevoid init() {log.info("初始化 LOL 游戏"); }@Overridevoid start() {log.info("LOL 游戏开始"); }@Overridevoid end() {log.info("LOL 游戏结束"); }}
3、CF游戏类
package com.asurplus.common.template; import lombok.extern.slf4j.Slf4j; /** * CF游戏 */@Slf4jpublic class CfGame extends Game {@Overridevoid init() {log.info("初始化 CF 游戏"); }@Overridevoid start() {log.info("CF 游戏开始"); }@Overridevoid end() {log.info("CF 游戏结束"); }}
二、测试
package com.asurplus.common.template; /** * 模板模式 */public class TestMain {public static void main(String[] args) {// LOL 游戏Game lolGame = new LolGame(); lolGame.play(); System.out.println(); // CF 游戏Game cfGame = new CfGame(); cfGame.play(); }}
输出结果
文章图片
可以看出,一套模板,可以有多个实现方式,从而实现了我们的工厂模式。
总结 本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- Java中常用的设计模式之策略模式详解
- java|InnerClass - 内部类 - java - 细节狂魔
- Java的Future接口
- java|工作log
- 【职业规划】该如何选择职业方向(性能?自动化?测开?,学习选择python、java?)
- 分享一些常用的开源博客社区网站
- Mybatis 使用的 9 种设计模式,真是太有用了
- Java不支持协程(那是你不知道Quasar!)
- 基于Java解决华为机试实现整数与IP地址间的转换
- Java实现角色扮演游戏的示例代码