zoukankan      html  css  js  c++  java
  • 模版方法模式

    模版方法模式(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;
    }
    

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

  • 相关阅读:
    保留最大的数
    彩色宝石项链
    [leetcode] 403. Frog Jump
    [leetcode] 402. Remove K Digits
    Linux 更改时区、时间
    Linux系统时间同步方法
    mysql 5.7.28 地理位置计算详解
    springboot微服务项目集成为单体
    地理空间数据Geometry在MySQL中使用(一)
    mysql中geometry类型的简单使用
  • 原文地址:https://www.cnblogs.com/pzqu/p/9457641.html
Copyright © 2011-2022 走看看