得墨忒耳定律也叫做“最少了解原理”,是一种软件设计原理,尤其是应用到面向对象的程序设计中,基本原理为:
- 每个对象对其他对象只能有最少的了解:只有总体才能接近个别对象;
- 每个对象只能和自己的朋友对话:不要和陌生人说话;
- 只和自己最亲密的朋友对话。
- 函数的得墨忒耳法则规定,某个对象的任何方法都应该只调用属于以下情形的方法:
- 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. 任何直接持有的组件对象
- }
- 得墨忒耳法则缩小了调用类中的响应集的规模,结果以这种方式设计的类的错误也往往更少。