模板模式,主要是利用多态来实现具体算法和父类逻辑的松耦合。父类中TemplateMethod内部定义了相应的算法操作顺序,子类负责实现相应的具体实现。
举例:
项目中曾遇到过一个需求,叫做高级价格体系。它对外的调用接口一致,只是在不同的应用场景下(比如普通消费和会员卡消费)计算方法有差异,简化计算流程:
1.初始化相应数据A()
2.执行价格计算B()
3.计算完成后的提示C()
等。
父类中的接口函数Run()将此顺序固定为:
Run()
{
A();
B();
C();
}
不同场景下的子类,各自实现自己的ABC即可,不用关心调用顺序。
进一步,核心算法B在所有场景下都是一致的,这时,可以将B()设置为private,让子类不用再实现。
时间: 2024-10-19 11:53:15