多平台统一管理软件接口,如何实现多平台统一管理软件接口
236
2022-08-25
Java中常用的设计模式之模板模式详解
目录优点缺点使用场景一、实现方式1、游戏抽象类2、LOL游戏类3、CF游戏类二、测试总结
优点
封装不变部分,扩展可变部分。
提取公共代码,便于维护。
行为由父类控制,子类实现。
缺点
每一个不同的实现都需要一个子cYaPtlI类来实现,导致类的个数增加,使得系统更加庞大。
使用场景
1.有多个子类共有的方法,且逻辑相同。
2.重要的、复杂的方法,可以考虑作为模板方法。
一、实现方式
假设一个场景,我们在玩游戏的时候,都需要初始化加载游戏,然后开始游戏,最后结束游戏,这像是一套模板一样的操作,但是具体的实现方法却不同,例如:LOL 游戏与 CF 游戏的加载资源肯定不同,游戏的内容也不同。
1、游戏抽象类
package com.asurplus.common.template;
/**
* 游戏抽象类
*/
puhttp://blic abstract class Game {
// 初始化游戏
abstract void init();
// 开始游戏
abstract void sthttp://art();
// 结束游戏
abstract void end();
// 模板
public final void play() {
// 初始化游戏
init();
// 开始游戏
start();
// 结束游戏
end();
}
}
2、LOL游戏类
package com.asurplus.common.template;
import lombok.extern.slf4j.Slf4j;
/**
* LOL游戏
*/
@Slf4j
public class LolGame extends Game {
@Override
void init() {
log.info("初始化 LOL 游戏");
}
@Override
void start() {
log.info("LOL 游戏开始");
}
@Override
void end() {
log.info("LOL 游戏结束");
}
}
3、CF游戏类
package com.asurplus.common.template;
import lombok.extern.slf4j.Slf4j;
/**
* CF游戏
*/
@Slf4j
public class CfGame extends Game {
@Override
void init() {
log.info("初始化 CF 游戏");
}
@Override
void start() {
log.info("CF 游戏开始");
}
@Override
void 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();
}
}
输出结果
可以看出,一套模板,可以有多个实现方式,从而实现了我们的工厂模式。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~