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;
    }
    */
  • 相关阅读:
    [Apache commons系列]DBUtils 示例代码
    关于syslog
    Phoenix Tips (1)
    Phoenix 常用函数
    Phoenix 的数据类型
    最简单的Phoenix 访问 HBase例子
    SVNKIT 主要方法
    Linux 集群时钟同步
    Linux 集群时钟同步
    Linux 下定时提交SVN
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3405025.html
Copyright © 2011-2022 走看看