生活随笔
收集整理的這篇文章主要介紹了
[设计模式]迪米特法则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
迪米特法則 又叫最少知識法則
類中的成員屬性和成員方法,如果不需要對外暴露,就不要設成public。
代碼如下:
#include <iostream>
#include <string>
using namespace std
;class AbstractBuilding
{
public:virtual void sale() = 0;
};class BuildingA :public AbstractBuilding
{
public:BuildingA():quilty("高品質"){}virtual void sale(){cout
<< "樓盤A" << quilty
<< "被售賣!" << endl
;}string quilty
;
};class BuildingB :public AbstractBuilding
{
public:BuildingB() :quilty("低品質") {}virtual void sale(){cout
<< "樓盤B" << quilty
<< "被售賣!" << endl
;}string quilty
;
};void test01()
{BuildingA
*ba
= new BuildingA
;if (ba
->quilty
== "低品質"){ba
->sale();}BuildingB
*bb
= new BuildingB
;if (bb
->quilty
== "低品質"){bb
->sale();}
}int main()
{test01();return 0;
}
測試結果:
迪米特法則
代碼如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std
;class AbstractBuilding
{
public:virtual void sale() = 0;virtual string
getQuilty() = 0;
};class BuildingA :public AbstractBuilding
{
public:BuildingA():quilty("高品質"){}virtual void sale(){cout
<< "樓盤A" << quilty
<< "被售賣!" << endl
;}virtual string
getQuilty(){return quilty
;}
private:string quilty
;
};class BuildingB :public AbstractBuilding
{
public:BuildingB() :quilty("低品質") {}virtual void sale(){cout
<< "樓盤B" << quilty
<< "被售賣!" << endl
;}virtual string
getQuilty(){return quilty
;}private:string quilty
;
};
class Mediator {
public:Mediator(){AbstractBuilding
*building
= new BuildingA
;vBuilding
.push_back(building
);building
= new BuildingB
;vBuilding
.push_back(building
);}~Mediator(){for (vector
<AbstractBuilding
*>::iterator it
= vBuilding
.begin(); it
!= vBuilding
.end(); it
++){if (*it
!= nullptr){delete *it
;}}}AbstractBuilding
*findMyBuilding(string quality
){for (vector
<AbstractBuilding
*>::iterator it
= vBuilding
.begin(); it
!= vBuilding
.end(); it
++){if ((*it
)->getQuilty()==quality
){return *it
;}}return nullptr;}vector
<AbstractBuilding
*> vBuilding
;};void test01()
{Mediator
*mediator
= new Mediator
;AbstractBuilding
* building
= mediator
->findMyBuilding("高品質");if (building
!= nullptr){building
->sale();}else{cout
<< "沒有符合條件的樓盤" << endl
;}
}int main()
{test01();return 0;
}
測試結果:
總結
以上是生活随笔為你收集整理的[设计模式]迪米特法则的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。