【设计模式】模板方法模式
1、概述
背景
在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。
例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。
又比如,公司决定开发的第一个游戏是麻将类的游戏app。对于麻将不同地方有不同的玩法,因此这个app,用户首先用账号登录游戏,然后可以选择玩法,最后是退出游戏。这里,登录游戏和退出游戏不区分玩法,也就是说无论哪种玩法 ,登录和退出的行为一模一样。但是具体的玩麻将的过程,不同的地方的玩法是不一样的,这个是不能复用的。这种场景就很适合用模板方法模式。
定义
定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
结构
模板方法(Template Method)模式包含以下主要角色:
-
抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。
-
模板方法:定义了算法的骨架&#
-