zoukankan      html  css  js  c++  java
  • 设计模式 之 《模板方法模式》

    #ifndef __TEMOLATE_METHOD_MODEL__
    #define __TEMOLATE_METHOD_MODEL__
    
    #include <string>
    #include <iostream>
    using namespace std;
    
    /*
    GOOD:把不变的代码部分都转移到父类中,将可变的代码用virtual留到子类重写
    
    迪米特法则:如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用。
    如果一个类需要调用另一个类的某个方法的话,可以通过第三个类转发这个调用。
    
    在类的结构设计上,每一个类都应该尽量降低成员的访问权限。
    */
    class AbstractClass
    {
    public:
        void show()
        {
            cout<<"我是"<<getName()<<endl;
        }
    protected:
        virtual string getName() = 0;
    };
    
    class A : public AbstractClass
    {
    protected:
        virtual string getName(){ return "A"; }
    };
    
    class B : public AbstractClass
    {
    protected:
        virtual string getName(){ return "B"; }
    };
    
    
    #endif //__TEMOLATE_METHOD_MODEL__
    
    /*
    #include "TemplateModel.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
        AbstractClass* a = new A();
        a->show();
    
        AbstractClass* b = new B();
        b->show();
    
        return 0;
    }
    */
  • 相关阅读:
    [APIO2014]序列分割
    [HNOI2014]世界树
    [THUWC2017]随机二分图
    快乐游戏鸡
    [SHOI2014]三叉神经树
    带花树学习笔记
    最小树形图——朱刘算法学习笔记
    【WC2018】即时战略
    [HNOI2015]接水果
    [HAOI2018]染色
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3405025.html
Copyright © 2011-2022 走看看