本文主要介绍的是软件设计原则中的迪米特法则。
迪米特法则 :
只和直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)朋友
是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联关系、聚合或组合关系,可以直接访问这些对象的方法。package principles.Dimite;
public class Star {
private String name;
public Star(String name) {
this.name = name;
}
public String getName(){
return name;
}
}
package principles.Dimite;
public class Fans {
private String name;
//提供一个有参构造方法
public Fans(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
package principles.Dimite;
public class Company {
private String name;
//构造方法
public Company(String name){
this.name = name;
}
//get方法
public String getName(){
return name;
}
}
package principles.Dimite;
public class Agent {
private Star star;
private Fans fans;
private Company company;
//提供获取对象的get方法
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() + "洽谈业务。");
}
}
package principles.Dimite;
public class Test {
public static void main(String[] args) {
//创建对应的对象
Agent agent = new Agent();
//创建经纪公司对象
Company company = new Company("时代峻峰");
//设置给经纪人对象
agent.setCompany(company);
Fans fans = new Fans("Aileen");
agent.setFans(fans);
Star star = new Star("易烊千玺");
agent.setStar(star);
//调用和粉丝见面的方法
agent.meeting();
//和媒体公司洽谈业务的方法
agent.business();
}
}
Agent
可以降低明星和粉丝,明星和媒体公司的耦合度。