10.模板方法模式

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

一 模板方法模式练习-试卷

UML图

测试代码

cpp 复制代码
#include <iostream>
using namespace std;
 
class TestPaper
{
public:
    void question2(){
        cout << "试题2" << endl;
        cout << "答案:" << answer2() << endl;
    }
    void question1(){
        cout << "试题1" << endl;
        cout << "答案:" << answer1() << endl;
    }
    virtual string answer1() = 0;
    virtual string answer2() = 0;
};
 
class TestPaperA:public TestPaper
{
public:
    virtual string answer1(){
        return "a";
    }
    virtual string answer2(){
        return "a";
    }
};
 
class TestPaperB:public TestPaper
{
public:
    virtual string answer1(){
        return "b";
    }
    virtual string answer2(){
        return "b";
    }
};
 
int main(void)
{
    cout << "学生a的试卷:" << endl;
    TestPaper *a = new TestPaperA();
    a->question1();
    a->question2();
 
    cout << "学生b的试卷:" << endl;
    TestPaper *b = new TestPaperB();
    b->question1();
    b->question2();
    return 0;
}

二、模板方法模式

UML


代码

cpp 复制代码
#include <iostream>
using namespace std;
 
class communication
{
public:
    void process(){
        read();
        write();
    }
    virtual int read() = 0;
    virtual int write() = 0;
};
class uart:public communication
{
public:
    int read(){
        cout << "读串口" << endl;
        return 0;
    }
    int write(){
        cout << "写串口" << endl;
        return 0;
    }
};
class tcp:public communication
{
public:
    int read(){
        cout << "读tcp" << endl;
        return 0;
    }
    int write(){
        cout << "写tcp" << endl;
        return 0;
    }
};
class udp:public communication
{
public:
    int read(){
        cout << "读udp" << endl;
        return 0;
    }
    int write(){
        cout << "写udp" << endl;
        return 0;
    }
};
 
 
int main(void)
{
    communication *u = new uart();
    communication *t = new tcp();
    communication *d = new udp();
    u->process();
    t->process();
    d->process();
    return 0;
}

运行结果:

读串口
写串口
读tcp
写tcp
读udp
写udp
相关推荐
G皮T2 天前
【设计模式】行为型模式(一):模板方法模式、观察者模式
java·观察者模式·设计模式·模板方法模式·template method·行为型模式·observer
zhouzhihao_072 天前
程序代码设计模式之模板方法模式(1)
java·设计模式·模板方法模式
南城花随雪。2 天前
Spring框架之模板方法模式 (Template Method Pattern)
java·开发语言·模板方法模式
糖拌西红柿多放醋17 天前
SpringBoot利用InitializingBean实现策略模式
java·spring boot·spring·策略模式·模板方法模式
努力找工作的OMArmy1 个月前
软件开发----设计模式每日刷题(转载于牛客)
java·单例模式·设计模式·策略模式·访问者模式·模板方法模式·开闭原则
麦克·唐1 个月前
模板方法模式、策略模式(C++)
c++·策略模式·模板方法模式
拉里小猪的迷弟1 个月前
设计模式-行为型-常用-1:观察者模式、模板模式、策略模式
观察者模式·设计模式·策略模式·模板方法模式
SunnyRivers1 个月前
模板方法模式
模板方法模式
qq_366086221 个月前
Spring Boot与模板方法模式:实现统一的日志处理流程
java·spring boot·模板方法模式
神的孩子都在歌唱2 个月前
行为设计模式 -模板方法模式- JAVA
java·设计模式·模板方法模式