温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++设计模式迪米特法则的示例分析

发布时间:2021-08-23 13:59:18 来源:亿速云 阅读:166 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关C++设计模式迪米特法则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.

类的设计接口尽量封装完善,让外部直接调用

#include<iostream> #include<string> #include<vector> using namespace std;   class AbstractBuilding { public:  virtual void sale() = 0;  virtual string getQuality() = 0;   };   class BuildingA :public AbstractBuilding { public:    BuildingA()  {  mQulity = "高品质";  }    virtual void sale()  {  cout << "楼盘A" << mQulity << "被售卖!" << endl;  }    virtual string getQuality()  {  return mQulity;  }   public:  string mQulity; };     class BuildingB :public AbstractBuilding { public:    BuildingB()  {  mQulity = "低品质";  }    virtual void sale()  {  cout << "楼盘B" << mQulity << "被售卖!" << endl;  }    virtual string getQuality()  {  return mQulity;  }   public:  string mQulity; };   // 中介类 class Mediator { public:  Mediator()  {  AbstractBuilding* building = new BuildingA;  vBuilding.push_back(building);  building = new BuildingB;  vBuilding.push_back(building);  }    // 对外提供接口  AbstractBuilding* findMyBuilding(string quality)  {  for (vector<AbstractBuilding*>::iterator it = vBuilding.begin();   it != vBuilding.end(); it++)  {   if ((*it)->getQuality() == quality)   {   return *it;   }  }    return NULL;  }    ~Mediator()  {  for (vector<AbstractBuilding*>::iterator it = vBuilding.begin();   it != vBuilding.end(); it++)  {   if (*it != NULL)   delete *it;  }  } public:  vector<AbstractBuilding*> vBuilding; };     void test01() {  Mediator* mediator = new Mediator;    AbstractBuilding* building = mediator->findMyBuilding("低品质");    if (building != NULL)  {  building->sale();    }  else  {  cout << "没有符号条件的楼盘" << endl;  }   }   int main() {  test01();  system("pause"); }

关于“C++设计模式迪米特法则的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI