![](https://img.haomeiwen.com/i10504036/f455e2cdf79860ee.jpg)
1.定义
1.一个对象应当对其他对象有尽可能少的了解
2.只与直接的对象通信
2.作用
- 降低类间耦合度,减低模块之间的影响
- 提高模块的扩展性
3.案例
以顾客向售货员买衣服为例,创建三个对象:顾客,售货员,服装。顾客类有购买衣服方法,售货员类有销售方法,服装类有衣服方法
/**
* 顾客
*/
public class Customer {
//购买衣服方法
public void buyClothes(Salesperson salesperson){
//创建衣服
Clothing clothing = new Clothing();
//售货员卖衣服给我
salesperson.sells(clothing);
}
}
顾客购买衣服方法中,先创建衣服,售货员再卖衣服给我。
/**
* 售货员
*/
public class Salesperson {
//销售方法
public void sells(Clothing clothing){
clothing.clothes();
}
}
/**
* 服装
*/
public class Clothing {
//衣服
public void clothes(){
System.out.print("衣服");
}
}
在上述实例中顾客和售货员都对衣服有依赖,顾客把衣服拿出来再让售货员卖给我。难道不应该是顾客叫售货员把衣服拿过来推销给我的吗?程序修改如下
顾客购买衣服只和售货员产生依赖
/**
* 顾客
*/
public class Customer {
//顾客购买衣服
public void buyClothes(Salesperson salesperson){
//售货员开始销售
salesperson.sells();
}
}
售货员通过通过构造函数方法把服装传递进来
/**
* 售货员
*/
public class Salesperson {
private Clothing clothing;
public void Salesperson(Clothing clothing) {
this.clothing = clothing;
}
//销售方法
public void sells(){
clothing.clothes();
}
}
这样的修改之后避开了顾客和衣服之间的依赖减低了类间的耦合,提高了系统的健壮性
4.总结
迪米特法则主要是针对类的,降低成员的访问限制和public方法,一个类尽量减少和其他类之间的相互作用,一个方法里面最好不要创建其他的对象,类和类之间的关系应该建立在类间。以来提高模块的独立性,和扩展性
网友评论