迪米特法则又叫作最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。
如果两个实体没有直接调用的必要,那么就可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性和复用性。但是这个法则也存在适用性,我们需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰。
如果只是单纯的两个实体之间的调用大可不必通过第三方,但是如果需要记录其请求内容和请求结果则可以通过第三方调用,在第三方处完成记录的业务处理。
public class Landlord {
/**
* 房东名
*/
private String fdName;
public String getFdName() {
return fdName;
}
public void setFdName(String fdName) {
this.fdName = fdName;
}
public Landlord() {
}
public Landlord(String fdName) {
this.fdName = fdName;
}
@Override
public String toString() {
return "Landlord{" +
"fdName='" + fdName + '\'' +
'}';
}
}
public class Tenant {
/**
* 租客名
*/
private String zkName;
public String getZkName() {
return zkName;
}
public void setZkName(String zkName) {
this.zkName = zkName;
}
public Tenant() {
}
public Tenant(String zkName) {
this.zkName = zkName;
}
@Override
public String toString() {
return "Tenant{" +
"zkName='" + zkName + '\'' +
'}';
}
}
/*
* 中介类
*/
public class Middleman {
/**
* 房东名
*/
private Landlord fdName;
/**
* 租客名
*/
private Tenant zkName;
public Landlord getFdName() {
return fdName;
}
public void setFdName(Landlord fdName) {
this.fdName = fdName;
}
public Tenant getZkName() {
return zkName;
}
public void setZkName(Tenant zkName) {
this.zkName = zkName;
}
public void contract(){
System.out.println("【" + fdName.getFdName() + "】" + "和" + "【" + zkName.getZkName() + "】" + "通过中介签署租房合同");
}
}
public static void main(String[] args) {
Middleman middleman = new Middleman();
middleman.setFdName(new Landlord("A房东"));
middleman.setZkName(new Tenant("C租客"));
middleman.contract();
}
【A房东】和【C租客】通过中介签署租房合同