官方定义
迪米特法则(LoD:Law of Demeter)又叫最少知识原则(LKP:Least
Knowledge Principle ),指的是一个类/模块对其他的类/模块有越少的了解越
好。简言之:talk only to your immediate friends(只跟你最亲密的朋友交
谈),不跟陌生人说话。
通俗解释
总结:尽量使用中间人角色
场景示例:
迪米特法则的独特之处在于它简洁而准确的定义,它允许在编写代码时直接应用,几乎自动地应用了适当的封装、高内聚和低耦合。
但是,过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。所以,在釆用迪米特法则时需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰。
public class Star {
private String name;
public Star(String name) {
this.name=name;
}
public String getName() {
return name;
}
}
粉丝类(Fans)
public class Fans {
private String name;
public Fans(String name) {
this.name=name;
}
public String getName() {
return name;
}
}
媒体公司类(Company)
public class Company {
private String name;
public Company(String name) {
this.name=name;
}
public String getName() {
return name;
}
}
经纪人类(Agent)
public class Agent {
private Star star;
private Fans fans;
private Company company;
public void setStar(Star star) {
this.star = star;
}
public void setFans(Fans fans) {
this.fans = fans;
}
public void setCompany(Company company) {
this.company = company;
}
public void meeting() {
System.out.println(fans.getName() + "与明星" +
star.getName() + "见面了。");
}
public void business() {
System.out.println(company.getName() + "与明星" +
star.getName() + "洽淡业务。");
}
}