Java中常用的设计模式之模板模式详解

网友投稿 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小时内删除侵权内容。

上一篇:python将Linux下使用top命令获取的进程信息进行分析做可视化展示(linux top查看某进程)
下一篇:Python 3.8 字典排序及字典列表排序(python是什么意思)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~