生活随笔
收集整理的這篇文章主要介紹了
深入浅出设计模式原则之迪米特法则(LoD)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面以“明星與經紀人的關系實例”為例來說明迪米特法則原則的應用(工程源碼)
分析:明星由于全身心投入藝術,所以許多日常事務由經紀人負責處理,如與粉絲的見面會,與媒體公司的業務洽淡等。這里的經紀人是明星的朋友,而粉絲和媒體公司是陌生人,所以適合使用迪米特法則,其類圖如圖 1 所示。
?
圖1 明星與經紀人的關系圖
#include <QCoreApplication>
#include <iostream>/*!* \brief Star class*/
class Star{
public:void SetName(std::string name){this->_star_name =name;}std::string GetName(void){return this->_star_name;}
private:std::string _star_name;
};/*!* \brief The Fans class*/
class Fans {
public:void SetName(std::string name){this->_fans_name = name;}std::string GetName(void){return this->_fans_name;}
private:std::string _fans_name;
};/*!* \brief The Company class*/
class Company{
public:void SetName(std::string name){this->_company_name = name;}std::string GetName(void){return this->_company_name;}
private:std::string _company_name;
};/*!* \brief The Agent class*/
class Agent{
public:void SetStar(Star &myStar){this->myStar = myStar;}void SetFans(Fans &myFans){this->myFans = myFans;}void SetCompany(Company &myCompany){this->myCompany = myCompany;}void Meeting(void){std::cout<< this->myStar.GetName()+" "+this->myFans.GetName() << std::endl;}void Business(void){std::cout<< this->myStar.GetName()+" "+this->myCompany.GetName() << std::endl;}
private:Star myStar;Fans myFans;Company myCompany;
};int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);Agent *myAgent = new Agent;Star myStar;myStar.SetName(std::string("Lili"));Fans myFans;myFans.SetName(std::string("mimi"));Company myCompany;myCompany.SetName(std::string("chuanmei"));myAgent->SetStar(myStar);myAgent->SetCompany(myCompany);myAgent->SetFans(myFans);myAgent->Meeting();myAgent->Business();return a.exec();
}
迪米特法則,又稱最少知道原則(Demeter Principle)
最少知道原則是指:一個實體應當盡量少地與其他實體之間發生相互作用,使得系統功能模塊相對獨立。
在運用迪米特法則時要注意以下 6 點。
在類的劃分上,應該創建弱耦合的類。類與類之間的耦合越弱,就越有利于實現可復用的目標。在類的結構設計上,盡量降低類成員的訪問權限。在類的設計上,優先考慮將一個類設置成不變類。在對其他類的引用上,將引用其他對象的次數降到最低。不暴露類的屬性成員,而應該提供相應的訪問器(set 和 get 方法)。謹慎使用序列化(Serializable)功能。
參考:
迪米特法則——面向對象設計原則
總結
以上是生活随笔為你收集整理的深入浅出设计模式原则之迪米特法则(LoD)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。