本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正
本系列作为七大原则和设计模式的进阶知识,看不懂没关系
请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺
1.迪米特法则(Law Of Demeter )
迪米特法则 强调了对象之间的松耦合。具体来说,它指出一个对象不应该知道太多关于其他对象的细节,只与直接的朋友通信
朋友是指:与该对象直接交互的其他对象或与该对象有关联关系的其他对象
2.举栗子
反例
我有三个类,服务员,菜单和顾客,我想让顾客点餐,需要什么?
一个服务员
一份菜单
服务员点单的行为
但是我不想让顾客知道我菜单的一些细节 ,比如我菜单内要是写了成本价,显然不能让其知道
但是在这个设计中,People
类直接依赖于 Menu
类,违反了迪米特法则
应该避免让 People
类知道太多关于 Menu
类的细节 ,但仍旧能让顾客点餐
修改
菜单类不变,直接让全权让服务员托管点单就行了
cs
// 服务员
public class Waiter
{
// 私有,不对外开放
private Menu menu = new Menu();
public string GetMenuContent()
{
return menu.Content;
}
}
// 顾客
public class People
{
public void GetMenu()
{
Waiter waiter = new Waiter();
Console.WriteLine(waiter.GetMenuContent());
}
}