模版方法模式

模版方法模式(TemplateMethod)
当我们要完成某一细节或者层次一致但是其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模版方法模式来处理。
—————《大话设计模式》
代码如下

#include <iostream>
using namespace std;
/*
 模版方法模式与模版不同
 但是基本思想是一样的。
 都是不重复的做相同的事情 
 */
 /*模版方法模式*/
 class AbstractBase{
    public:
        void TemplateMethod()
        {
            cout<<"客户信息表:"<<endl;
            cout<<"姓名"<<this->Name()<<endl;
             cout<<"年龄"<<this->Age()<<endl;
        }
        protected:
            /*将两个虚接口定义成受保护的原因是为了让客户端无法直接调用*/
            virtual string Name()=0;
            virtual int Age()=0;
 }; 
 class Message:public AbstractBase{
    private:
        string name;
        int age;
        public:
            Message()
             {
             this->name="未知";
             this->age=0;
             }
             Message(string name,int age)
             {
                this->name=name;
                this->age=age;
             }
        protected:
            string Name()
            {
                return name;
            }
            int Age()
            {
                return age;
            }
 };
int main(void)
{
    AbstractBase *p1=new Message("Tom",15);
    AbstractBase *p2=new Message("King",25);
    p1->TemplateMethod();
    p2->TemplateMethod();
    return 0;
}

优点:
通过将不变的行为搬移到基类中去除子类的重复代码。便于代码复用。

posted @   机智的程序员小熊  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示