设计模式六大原则----------迪米特法则
2014-03-26 13:57
274 查看
设计模式总览
迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。这样就能有效降低耦合了。
特点:
1、只和“朋友”联系
2、就算是“朋友”也要少建立联系
用途:
降耦
实例分析:
1、只和“朋友”联系,那这里的“朋友”是什么呢?“朋友”是指成员变量、函数参数、或函数返回值!举个例子:
客户找装修公司为其装修房子,装修公司委派一名工人前去装修。
有了上面的关系,不难看出,这段代码违背了迪米特法则!因为Clientele与非“朋友”类Worker有了联系!所以要对这段代码进行修改:
迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。这样就能有效降低耦合了。
特点:
1、只和“朋友”联系
2、就算是“朋友”也要少建立联系
用途:
降耦
实例分析:
1、只和“朋友”联系,那这里的“朋友”是什么呢?“朋友”是指成员变量、函数参数、或函数返回值!举个例子:
客户找装修公司为其装修房子,装修公司委派一名工人前去装修。
class Worker { public: void Decorate(); }; class Company { public: Worker* regist(); }; class Clientele { public: void Decorate(const Company* com) { Worker* worker = com->regist(); worker->Decorate(); } };代码中涉及到三个类装修工人Worker、装修公司Company、雇主Clientele。再来分析一下他们的关系Company是Clientele的“朋友”,Worker是Company的“朋友”,但Worker并非是Clientele的朋友。
有了上面的关系,不难看出,这段代码违背了迪米特法则!因为Clientele与非“朋友”类Worker有了联系!所以要对这段代码进行修改:
class Worker { public: void Decorate(); }; class Company { public: void Decoreate() { Worker* worker = regist(); worker->Decorate(); } Worker* regist(); }; class Clientele { public: void Decorate(const Company* com) { com->Decorate(); } };现在Clientele只和“朋友”Company联系,同样Company只和“朋友”Worker联系。虽然满足了迪米特法则的第一步,但仍然违背了第二步:和“朋友”也要少建立联系!再次对代码进行修改,修改Company的regist方法的访问级别
class Worker { public: void Decorate(); }; class Company { public: void Decoreate() { Worker* worker = regist(); worker->Decorate(); } private: Worker* regist(); }; class Clientele { public: void Decorate(const Company* com) { com->Decorate(); } };OK,到这里为止,就可以根据迪米特法则,将原方案中的耦合降到最低了!
相关文章推荐
- 设计模式六大原则(5):迪米特法则
- 设计模式六大原则(5):迪米特法则
- 设计模式六大原则(5):迪米特法则
- 设计模式六大设计原则之迪米特法则(Law Of Demeter)
- 设计模式六大原则(5):迪米特法则
- 设计模式六大原则(5):迪米特法则
- 【设计模式六大原则】迪米特法则
- 设计模式六大原则(5):迪米特法则
- 【转】设计模式六大原则(5):迪米特法则
- 【设计模式】六大原则之三(迪米特法则与合成/聚合复用原则)
- 设计模式学习之——六大设计原则之五:迪米特法则
- ZT 设计模式六大原则(5):迪米特法则
- 设计模式六大原则——迪米特法则(LoD)
- 设计模式六大原则(5):迪米特法则
- 设计模式六大原则(5):迪米特法则
- 设计模式(六)------设计模式六大原则(5):迪米特法则
- IOS设计模式的六大设计原则之迪米特法则(LOD,Law Of Demeter)
- 移动架构27_设计模式六大原则五: 迪米特法则
- 设计模式六大原则(5):迪米特法则
- 设计模式六大原则(5):迪米特法则