模板方法模式学习
一、定义和组成
模板方法模式有两部分组成
- 抽象父类
- 具体实现的子类
通常是在父类中定义算法骨架和一些公共的方法,子类继承父类方法的基础上,不修改算法骨架,重新定义父类中算法的某些实现步骤。
二、应用场景
- 多个子类拥有公共的方法,且逻辑相同,可以提取到父类中实现
- 父类实现不变的部分,并将可变行为交给子类来实现
- 需要通过子类来决定父类中某个步骤是否执行,实现子类对父类的反控制
三、例子讲解
我们去银行取钱、存钱、办卡等业务的时候,都需要三大步骤:
- 排队取号;
- 办理具体的业务;
- 服务评价。
然后这个步骤可以抽取到父类中去实现整体的步骤(算法骨架),其中第一步排队取号和第三步服务评价是公共的方法,可以在父类中实现,第二步办理具体业务在不同的子类来实现
3.1 存钱
首先我们来看下银行存钱业务,一般步骤如下:
- 排队取号;
- 存钱;
- 服务评价。
通过以下代码,我们就完成了去银行办理存钱的业务
var Deposit = function () {};
Deposit.prototype.takeNumber = function() {
console.log('排队取号');
};
Deposit.prototype.depositMoney = function() {