模板方法
2021/7/4 23:20:48
本文主要是介绍模板方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模板方法
定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
模板方法包含以下角色:
- 抽象类:负责给出一个算法的轮廓和骨架
- 模板方法包含了具体逻辑顺序
- 基本方法包含了抽象方法以及具体方法
- 具体子类:实现抽象类中所定义的方法,它们是一个顶级逻辑的组成步骤。
具体实现
例如去银行办理业务,需要取号、排队、办理具体业务等流程,其中取号、排队是必须经过的流程顺序,办理具体业务是抽象的,因人而异
1.创建抽象类Bank
public abstract class Bank { //办理抽象业务 public abstract void Onbusiness(); //模板方法包含具体顺序逻辑 public void TemplateMethod() { //第一步:取号 Getnumber(); //第二步:排队 lineup(); //第三步:办理具体业务 Onbusiness(); } public void Getnumber(){ System.out.println("先取号"); } public void lineup() { System.out.println("再排队"); } }
2.创建具体业务类实现接口
//基金业务 public class FundBusiness extends Bank{ @Override public void Onbusiness() { System.out.println("办理基金业务"); } } //存款业务 public class DepositBusiness extends Bank{ @Override public void Onbusiness() { System.out.println("办理存款业务"); } }
3.客户端实现
public static void main(String[] args) { DepositBusiness depositBusiness=new DepositBusiness(); depositBusiness.TemplateMethod(); System.out.println("--------------------------"); FundBusiness fundBusiness=new FundBusiness(); fundBusiness.TemplateMethod(); }
优点:模板模式提高了代码的复用性,把不变的行为放在父类中,而将不同的代码放入不同的子类中
缺点:对每个不同的实现都需要定义一个子类去实现接口,这会导致类的个数增加,系统更加庞大,设计也更加抽象
适用场景:
- 算法的整体步骤很固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。
- 需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制
这篇关于模板方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求