松岗怎么做企业网站设计,wordpress识图插件,成都装饰网站建设,高档网站建设文章目录 3.5 迪米特法则(DP)3.5.1 概述3.5.2 案例 3.5 迪米特法则(DP)
迪米特法则#xff1a;Demeter Principle#xff0c;简称DP
3.5.1 概述
只和你的直接朋友交谈#xff0c;不跟“陌生人”说话#xff08;Talk only to your immediate friends and not to stranger… 文章目录 3.5 迪米特法则(DP)3.5.1 概述3.5.2 案例 3.5 迪米特法则(DP)
迪米特法则Demeter Principle简称DP
3.5.1 概述
只和你的直接朋友交谈不跟“陌生人”说话Talk only to your immediate friends and not to strangers。
其含义是如果两个软件实体无须直接通信那么就不应当发生直接的相互调用可以通过第三方转发该调用。其目的是降低类之间的耦合度提高模块的相对独立性。如学生通过中介租房而不是直接联系房东
迪米特法则中的“朋友”是指当前对象本身、当前对象的成员对象、当前对象所创建的对象(即 在当前对象的方法中创建其他对象)、当前对象的方法参数(即 当前对象方法的形参是一个对象类型调用改方法需要传入一个实际的对象)等这些对象同当前对象存在关联、依赖、聚合或组合关系可以直接访问这些对象的方法。
3.5.2 案例
下面看一个例子来理解迪米特法则
【例】明星与经纪人的关系实例
明星由于全身心投入艺术所以许多日常事务由经纪人负责处理如和粉丝的见面会和媒体公司的业务洽淡等。这里的经纪人是明星的朋友而粉丝和媒体公司是明星的陌生人降低了明星和粉丝以及明星和公司的耦合度所以适合使用迪米特法则。 public class Fans {private String name;// 有参构造public Fans(String name) {this.name name;}public String getName() {return name;}
}
public class Star {private String name;// 带参构造public Star(String name) {this.name name;}public String getName() { return name;}
}
public class Company {private String name;// 有参构造public Company(String name) {this.name name;}public String getName() {return name;}
}
// 经纪人类相当于第三方
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()洽谈业务);}
}public class ClientTest {public static void main(String[] args) {// 创建经纪人类Agent agent new Agent();// 创建明星类Star star new Star(詹姆斯);agent.setStar(star);// 创建粉丝类Fans fans new Fans(球迷);agent.setFans(fans);//创建公司类Company company new Company(李宁公司);agent.setCompany(company);//和粉丝见面agent.meeting();//和公司洽谈业务agent.business();}
}