日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.5 隐藏委托关系

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.5 隐藏委托关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【1】源代碼

1 #include <QString> 2 3 class Department; 4 class Person 5 { 6 public: 7 QString getName() 8 { 9 return m_name; 10 } 11 void setName(QString name) 12 { 13 m_name = name; 14 } 15 16 Department* get_department() 17 { 18 return m_department; // 獲取部門對象 19 } 20 21 void set_department(Department *department) 22 { 23 m_department = department; 24 } 25 26 private: 27 QString m_name; 28 Department *m_department; 29 }; 30 31 class Department 32 { 33 public: 34 QString getCode() 35 { 36 return m_code; 37 } 38 void setCode(QString code) 39 { 40 m_code = code; 41 } 42 Person get_manager() 43 { 44 return m_manager; // 獲取經理人 45 } 46 void set_manager(Person manager) 47 { 48 m_manager = manager; 49 } 50 51 private: 52 QString m_code; 53 Person m_manager; 54 }; 55 56 int main(int argc, char *argv[]) 57 { 58 QCoreApplication a(argc, argv); 59 60 Person person; 61 QString strName = person.get_department()->get_manager().getName(); // 客戶端 62 // 這樣的編碼對客戶暴露了Department的工作原理,于是客戶知道:Department用以追蹤"經理"這條信息。 63 64 return a.exec(); 65 }

【2】隱藏委托關系

1 class Person 2 { 3 public: 4 // 如果對客戶隱藏Department,可以減少耦合。為了到達預期的目的,在Person中建立一個簡單的委托函數。 5 Person getManager() 6 { 7 return m_department->get_manager(); // 隱藏委托類 8 } 9 10 QString getName() 11 { 12 return m_name; 13 } 14 void setName(QString name) 15 { 16 m_name = name; 17 } 18 19 Department* get_department() 20 { 21 return m_department; // 獲取部門對象 22 } 23 24 void set_department(Department *department) 25 { 26 m_department = department; 27 } 28 29 private: 30 QString m_name; 31 Department *m_department; 32 }; 33 34 class Department 35 { 36 public: 37 QString getCode() 38 { 39 return m_code; 40 } 41 void setCode(QString code) 42 { 43 m_code = code; 44 } 45 Person get_manager() 46 { 47 return m_manager; // 獲取經理人 48 } 49 void set_manager(Person manager) 50 { 51 m_manager = manager; 52 } 53 54 private: 55 QString m_code; 56 Person m_manager; 57 }; 58 59 int main(int argc, char *argv[]) 60 { 61 QCoreApplication a(argc, argv); 62 63 Person person; 64 QString strName = person.getManager().getName(); // 客戶端調用方式 65 66 return a.exec(); 67 }

【3】總結

客戶通過一個委托類來調用另一個對象。

在服務類上建立客戶所需的所有函數,用以隱藏委托關系。

?

Good Good Study, Day Day Up.

順序 選擇 循環 總結

總結

以上是生活随笔為你收集整理的2.5 隐藏委托关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。