Chapter10 模板方法模式

模板方法模式简介

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

父类可以成为子类的模板,所有重复的代码都应该要上升到父类去,而不是让每个子类都去重复。

当我们要完成某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。

模板方法模式是通过把不变形为搬移到超类,去除子类中的重复代码来体现它的优势。它提供了一个很好的代码复用平台。

当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式可以把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

模板方法模式UML类图

 

 

C++代码实现

复制代码
// 抽象基类,包含模板getBook,把具体不同的细节交给getName完成
#ifndef _ABSTRACTCLASS_HPP
#define _ABSTRACTCLASS_HPP

#include<string>
#include<iostream>
using namespace std;

class AbstractClass{
public:
    virtual string getName() = 0;
    void getBook(){
        cout << "this book is named " << getName()<<endl;
    }

};

#endif
复制代码
复制代码
//实现具体细节的子类
#ifndef _CONCRETECLASS_HPP
#define _CONCRETECLASS_HPP
#include"abstractclass.hpp"
#include<iostream>
#include<string>
using namespace std;

class ConcreteClass : public AbstractClass{
    virtual string getName()override{
        return "book1";
    }  
};

#endif
复制代码
复制代码
//客户端程序
#include"concreteclass.hpp"

using namespace std;
int main(){
    ConcreteClass cc;
    cc.getBook();

    getchar();
    return 0;
复制代码

 

posted @   yangbofun  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示