Java中模板模式怎么用
导读:本文共1402字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 优点封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现。缺点每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。使用场景1.有多个子类共有的方法,且逻辑相同。2.重要的、复杂的方法,可以考虑作为模板方法。一、实现方式假设一个场景,我们在玩游戏的时候,都需要初始化加载游戏,然后开始游戏,最后结束游戏,这像是一套模板一... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。优点
封装不变部分,扩展可变部分。
提取公共代码,便于维护。
行为由父类控制,子类实现。
缺点
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
使用场景
1.有多个子类共有的方法,且逻辑相同。
2.重要的、复杂的方法,可以考虑作为模板方法。
一、实现方式
假设一个场景,我们在玩游戏的时候,都需要初始化加载游戏,然后开始游戏,最后结束游戏,这像是一套模板一样的操作,但是具体的实现方法却不同,例如:LOL 游戏与 CF 游戏的加载资源肯定不同,游戏的内容也不同。
1、游戏抽象类
packagecom.asurplus.common.template;/***游戏抽象类*/publicabstractclassGame{//初始化游戏abstractvoidinit();//开始游戏abstractvoidstart();//结束游戏abstractvoidend();//模板publicfinalvoidplay(){//初始化游戏init();//开始游戏start();//结束游戏end();}}
2、LOL游戏类
packagecom.asurplus.common.template;importlombok.extern.slf4j.Slf4j;/***LOL游戏*/@Slf4jpublicclassLolGameextendsGame{@Overridevoidinit(){log.info("初始化LOL游戏");}@Overridevoidstart(){log.info("LOL游戏开始");}@Overridevoidend(){log.info("LOL游戏结束");}}
3、CF游戏类
packagecom.asurplus.common.template;importlombok.extern.slf4j.Slf4j;/***CF游戏*/@Slf4jpublicclassCfGameextendsGame{@Overridevoidinit(){log.info("初始化CF游戏");}@Overridevoidstart(){log.info("CF游戏开始");}@Overridevoidend(){log.info("CF游戏结束");}}
二、测试
packagecom.asurplus.common.template;/***模板模式*/publicclassTestMain{publicstaticvoidmain(String[]args){//LOL游戏GamelolGame=newLolGame();lolGame.play();System.out.println();//CF游戏GamecfGame=newCfGame();cfGame.play();}}
输出结果
可以看出,一套模板,可以有多个实现方式,从而实现了我们的工厂模式。
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Java中模板模式怎么用的详细内容,希望对您有所帮助,信息来源于网络。