迪米特法则
迪米特法则的定义是:只与你的直接朋友交谈,不跟“陌生人”说话。
它强调以下两点:
1.从依赖者的角度来说,只依赖应该依赖的对象。
2.从被依赖者的角度说,只暴露应该暴露的方法。
目的是降低耦合性。
例:明星与经纪人的关系实例。
明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则,uml图如下
/**
* 媒体公司
* @author zwzh_zj
*/
public class Company {
private String name;
Company(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
/**
* 粉丝
* @author zwzh_zj
*/
public class Fans {
private String name;
Fans(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
/**
* 明星
* @author zwzh_zj
*/
public class Star {
private String name;
Star(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Agent {
private Star myStar;
private Fans myFans;
private Company myCompany;
public void setStar(Star myStar) {
this.myStar = myStar;
}
public void setFans(Fans myFans) {
this.myFans = myFans;
}
public void setCompany(Company myCompany) {
this.myCompany = myCompany;
}
public void meeting() {
System.out.println(myFans.getName() + "与明星" + myStar.getName() + "见面了。");
}
public void business() {
System.out.println(myCompany.getName() + "与明星" + myStar.getName() + "洽淡业务。");
}
}
主类实现
public class Main {
public static void main(String[] args) {
Agent agent = new Agent();
agent.setStar(new Star("彭于晏"));
agent.setFans(new Fans("粉丝小周"));
agent.setCompany(new Company("浙江传媒有限公司"));
agent.meeting();
agent.business();
}
}
参考资料:
1.http://c.biancheng.net/view/1331.html
代码地址:https://gitee.com/zhoujie1/design-mode-and-principle.git