Templlate Method 模式
设计动机:
软件开发过程中可能存在多人协同完成某一个任务的情况,假设有任务ABCDE,其中甲完成ACE,乙完成BD,任务顺序为:A->B->C->D->E。
我们可以将上述问题理解为后台开发人员与业务开发人员的协作过程,显然这样的程序编写过程中会出现一些问题,比如业务开发人员在调用库开发人员编写的代码时可能了解不够,或者存在错误的使用方式,导致调用失败,实际情况下可能存在经济利益相关的问题导致库程序人员不可能开源业务逻辑或者亲自指导,故这样可能使开发出现风险。
为了解决这个问题,我们可以采用Templlate method模式,由库开发人员直接编写整个业务流程(定义出整个算法的骨架),业务开发人员仅编写业务相关逻辑即可,由于业务开发人员开发可能发生的时间是滞后的因此使用虚函数的方式将函数提供给业务编写人员去重构。
要点:
不要调用我,让我来调用你。
在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚方法),但一般推荐将它们设置为protected方法。
这个模式更多地是从library的角度而非application的角度来思考的。
GitHUB链接:
https://github.com/chouxianyu/design-patterns-cpp/blob/master/docs/TemplateMethod.md