这篇文章距离最后更新已过28          天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
        
       
      
        
      定义
- 又叫最少知识法则
 - 只与你的直接朋友交谈,不跟陌生人说话
 - 如果两个软件实体无须直接通信,那么就不应当直接相互调用,可以通过第三方转发该调用
 
强调
- 从依赖者角度来说,只依赖应该依赖的对象
 - 从被依赖者的角度来说,只暴露应该暴露的方法
 - 门面模式和调停者模式(中介者模式)是迪米特法则的应用
 
使用场景
- 明星与经纪人的关系实例
 - 明星只负责艺术,其他业务(粉丝见面会、媒体公司洽谈)交由经纪人处理
 - 明星与经纪人是朋友,明星与媒体公司和粉丝是陌生人
 
代码实现
// 经纪人
public class Agent
{
    private Star _star;
    private Fans _fans;
    private Company _company;
      public void SetStar(Star star)
    {
        _star = star;
    }
    public void SetFans(Fans fans)
    {
        _fans = fans;
    }
    public void SetCompany(Company company)
    {
        _company = company;
    }
    public void Business()
    {
        Console.WriteLine("{0}与{1}公司进行洽谈", _star.Name, _company.Name);
    }
    public void Meeting()
    {
        Console.WriteLine("{0}与{1}粉丝团见面",_star.Name,_fans.Name);
    }
}
//明星
public class Star
{
    public string Name { get; set; }
}
//粉丝团
public class Fans
{
    public string Name { get; set; }
}
//媒体公司
public class Company
{
    public string Name { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        Star star = new Star { Name = "成龙" };
        Company company = new Company { Name = "中国影视协会" };
        Fans fans = new Fans { Name = "博龙" };
        Agent agent = new Agent();
        agent.SetStar(star);
        agent.SetFans(fans);
        agent.SetCompany(company);
        agent.Meeting();
        agent.Business();
    }
}  
优点与缺点
- 类间解耦,弱耦合,提高类的复用率
 - 造成系统不同模块之间的通信效率变低,不同模块之间不容易协调
 - 容易导致大量的中介类,大大增加复杂度(可使用依赖倒转原则解决,在调用方和被调用方有一个抽象层)