设计模式 之 《模板方法模式》

 

#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;
}
*/

 

 

 

 

posted @ 2013-11-03 16:07  解放1949  阅读(153)  评论(0编辑  收藏  举报