zoukankan      html  css  js  c++  java
  • 设计模式7:模板方法模式

    一、我的描述

      模板方法模式是将不变的行为搬到超类中,去除子类中重复的代码来体现它的优势,提供了很好的代码复用。

      我的理解就是就像是咱们学画画的时候,老师说大家比着这个苹果,然后画一幅自己的苹果,然后大家都在那画,但是大家画出来的都不相同,但是呢我们相同的是我们比照的模式是相同的苹果。

      再举个例子:某一次考试,同样的试卷,A得到90分,B得到80分。这次考试相同的是:A和B的试卷是相同的,但是他俩得分不一样是因为他们的答案不一样。那么延伸到模板方法模式中,不变的是试卷的试题,我们把它搬到超类中。不同的是这次考试中我们的答案。 

    二、UML 图

      

    那么针对于我上面考试的例子,我的UML图应该是:

      

    三、我的考试模板代码实现

    #include<iostream>
    using namespace std;
    
    class Test {
    public:
        void Question() {
            cout << "Question1 : who is Feng'jie?" << endl;
        }
    
        virtual void Answer() {}
    };
    
    class Answer1 : public Test {
    public:
        virtual void Answer() {
            cout << "Answer1's answer: " << "C" << endl;
        }
    };
    
    class Answer2 : public Test {
    public:
        virtual void Answer() {
            cout << "Answer2's answer: " << "B" << endl;
        }
    };
    
    int main() 
    {
        Test *p_test1 = new Answer1();
        p_test1->Question();
        p_test1->Answer();
        delete p_test1;
    
        Test *p_test2 = new Answer2();
        p_test2->Question();
        p_test2->Answer();
        delete p_test2;
        
        return 0;
    }

      

  • 相关阅读:
    mysql 组合聚集函数
    mysql distinct()函数 去重
    mysql sum()函数 , 计算总和
    mysql max()函数,min()函数,获取最大值以及最小值
    mysql count() 函数,对结果统计计数
    三个实例演示 Java Thread Dump 日志分析
    借助LVS+Keepalived实现负载均衡
    配置Tomcat成为系统服务
    快速理解Docker
    tomcat 启动时设置 java 参数,mark
  • 原文地址:https://www.cnblogs.com/457220157-FTD/p/4037934.html
Copyright © 2011-2022 走看看