得墨忒耳定律也叫做“最少了解原理”,是一種軟件設計原理,尤其是應用到面向對象的程序設計中,基本原理爲:
- 每個對象對其他對象只能有最少的瞭解:只有總體才能接近個別對象;
- 每個對象只能和自己的朋友對話:不要和陌生人說話;
- 只和自己最親密的朋友對話。
- 函數的得墨忒耳法則規定,某個對象的任何方法都應該只調用屬於以下情形的方法:
- class Demeter
- {
- public:
- void example(B &b);
- private:
- A *a;
- int func(){}
- }
- void Demeter::example(B &b)
- {
- C c;
- int f = func(); <------------------1. 它自身
- b.invert(); <----------------------2. 傳入該方法的任何參數
- a = new A();
- a->setActive(); <------------------3. 它創建的任何對象
- c.print(); <-----------------------4. 任何直接持有的組件對象
- }
- 得墨忒耳法則縮小了調用類中的響應集的規模,結果以這種方式設計的類的錯誤也往往更少。