2.5 隐藏委托关系
生活随笔
收集整理的這篇文章主要介紹了
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 隐藏委托关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从css样式表中抽取元素尺寸
- 下一篇: 使用c:forEach 控制5个换行