demoLodNot.java:没完全使用迪米特法则
package com.csdn.principle.lod;
import java.util.List;
class Customer{
//根据迪米特法则:类属性是直接朋友
Order order;
//根据迪米特法则:方法参数或者方法返回对象是直接朋友
public int CountGoods(Order order){
//根据迪米特法则:方法中的对象若非类属性/方法参数/返回值,
// 其它的都为间接朋友,要尽量避免。如这里的items
//它的直接朋友order对象的所属类就应该直接提供一个计算订单项个数的方法。
List<OrderItem> items = order.getItems();
return items.size();
}
}
class Order{
//类属性是直接朋友
List<OrderItem> items;
public List<OrderItem> getItems() {
return items;
}
}
class OrderItem{
}
public class demoLodNot {
}
demoLod.java:使用迪米特法则
package com.csdn.principle.lod;
import java.util.List;
class Customer2{
//根据迪米特法则:类属性是直接朋友
Order2 order;
public int countGoods(){
//没有间接朋友,符合迪米特法则
return order.countItems();
}
}
class Order2{
//类属性是直接朋友
List<OrderItem> items;
public int countItems() {
return items.size();
}
//如果order还有其它方法,根本就不想让其它类访问到,那就要用private来修饰。
// 或者根据实际情况用其它修饰符。Order类只对外暴露部分方法而不是所有。外面的类知道得越少越好
}
class OrderItem2{
}
public class demoLod {
}