博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板方法模式
阅读量:4048 次
发布时间:2019-05-25

本文共 857 字,大约阅读时间需要 2 分钟。

官方定义:

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

自己的思考:

模板方法是把一个确定不变的行为过程转移到基类,并在基类中定义确定的行为步骤,将不确定的行为利用虚函数机制,在子类中进行覆写(override),从而实现不变行为的代码复用,(早绑定 vs 晚绑定)。

UML类图:

在这里插入图片描述
代码实现:

#include
//库函数,函数底层代码块class Library {
protected: void Step1() {
//代码实现(稳定的); }; void Step3() {
//代码实现(稳定的); } void Step5() {
//代码实现(稳定的); } virtual bool Step2() = 0; //可变不稳定的,将实现延迟到子类中 virtual void Step4() = 0; //可变不稳定的,将实现延迟到子类中public: // 算法的骨架,流程是确定的 void Methed() {
Step1(); if (Step2()) Step3(); Step4(); for (int i = 0; i < 4; i++) Step5(); } //基类解析函数定义为虚函数,目的是正确调用派生类析构顺序 virtual ~Library() {
}};//应用程序块class Aplication:public Library {
protected: virtual bool Step2() {
//代码实现 } virtual void Step4() {
//代码实现 }};int main() {
Library* test = new Aplication; test->Methed(); delete test; return 0;}

转载地址:http://ctyci.baihongyu.com/

你可能感兴趣的文章
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>
机器学习实战之决策树(一)
查看>>
机器学习实战之决策树二
查看>>
[LeetCode By Python]7 Reverse Integer
查看>>
[leetCode By Python] 14. Longest Common Prefix
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>
[LeetCode By Python]122. Best Time to Buy and Sell Stock II
查看>>
[LeetCode By Python]125. Valid Palindrome
查看>>
[LeetCode By Python]136. Single Number
查看>>
Android/Linux 内存监视
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
android raw读取超过1M文件的方法
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>