Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1811495
  • 博文数量: 496
  • 博客积分: 12043
  • 博客等级: 上将
  • 技术积分: 4778
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-27 14:26
文章分类

全部博文(496)

文章存档

2014年(8)

2013年(4)

2012年(181)

2011年(303)

2010年(3)

分类: C/C++

2012-06-06 10:38:26

目标:把不变的代码部分都转移到父类中,将可变的代码用virtual留到子类重写。
下面是示例代码:
#include
#include
#include

using namespace std;

class AbstractClass
{
public:
    void Show()
    {
cout << "我是" << GetName() << endl;
    }
protected:
    virtual string GetName()=0;
};

class Naruto : public AbstractClass
{
protected:
    virtual string GetName()
    {
return "火影史上最帅的六代目——一鸣惊人naruto";
    }
};

class OnePice : public AbstractClass
{
protected:
    virtual string GetName()
    {
return "无恶不做的大海盗——路飞OnePice";
    }
};

//客户端
int main()
{
    Naruto* man = new Naruto();
    man->Show();
    
    OnePice* man2 = new OnePice();
    man2->Show();
    
    return 0;
}


迪米特法则:
      如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用。
      如果一个类需要调用另一个类的某个方法的话,可以通过第三个类转发这个调用。
      在类的结构设计上,每一个类都应该尽量降低成员的访问权限。
      该法则在后面的适配器模式、解释模式等中有强烈的体现。

阅读(673) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~