C++設(shè)計模式迪米特法則實例
迪米特法則(Law of Demeter)又叫作最少知識原則(Least Knowledge Principle 簡寫LKP),就是說一個對象應(yīng)當對其他對象有盡可能少的了解,不和陌生人說話。英文簡寫為: LoD.
類的設(shè)計接口盡量封裝完善,讓外部直接調(diào)用
#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 = "高品質(zhì)";
}
virtual void sale()
{
cout << "樓盤A" << mQulity << "被售賣!" << endl;
}
virtual string getQuality()
{
return mQulity;
}
public:
string mQulity;
};
class BuildingB :public AbstractBuilding
{
public:
BuildingB()
{
mQulity = "低品質(zhì)";
}
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("低品質(zhì)");
if (building != NULL)
{
building->sale();
}
else
{
cout << "沒有符號條件的樓盤" << endl;
}
}
int main()
{
test01();
system("pause");
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實現(xiàn)LeetCode(191.位1的個數(shù))
這篇文章主要介紹了C++實現(xiàn)LeetCode(191.位1的個數(shù)),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08
C++利用std::forward_list查找插入數(shù)據(jù)方法示例
這篇文章主要給大家介紹了關(guān)于C++利用std::forward_list查找插入數(shù)據(jù)的相關(guān)資料,文中先對std::forward_list進行了詳細的介紹,而后通過示例代碼給大家介紹了查找的方法,需要的朋友可以參考借鑒,下面話不多說了,來一起看看吧。2017-08-08
C++編程中的const關(guān)鍵字常見用法總結(jié)
這篇文章主要介紹了C++編程中的const關(guān)鍵字常見用法總結(jié),const關(guān)鍵字的使用是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-11-11
Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序的圖文教程
這篇文章主要介紹了Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序,以實例來簡單介紹一下VS2022中如何使用MinGW來編譯、調(diào)試C/C++程序,需要的朋友可以參考下2022-08-08
C++?AVL樹插入新節(jié)點后的四種調(diào)整情況梳理介紹
AVL樹是高度平衡的而二叉樹,它的特點是AVL樹中任何節(jié)點的兩個子樹的高度最大差別為1,本文主要給大家介紹了C++如何實現(xiàn)AVL樹,需要的朋友可以參考下2022-08-08

