迪米特法则简单易懂的话语来描述就是:知道的越少越好,什么知道越少越好呢,两个类之间交互的越少越好,从而可以减低耦合度,当两个类之间的交互很少,耦合度就会降低,耦合度一旦降低,修改其中一个类就不会对另外一个类造成影响:


我们直接看案例来说明分析:

以下是违反了迪米特法则案例:
煮菜类与买菜类,洗菜类,交互的比较多,耦合度增高:

/**
 * 定义一个买菜类
 * @author Liudeli
 */
class Food {

    /**
     * 此方法是买菜的行为
     */
    public static void doMethod() {
        System.out.println("买了一条鱼,买了一只鸡,买了一头猪....");
    }

}

/**
 * 创建一个洗菜的类
 * @author Liudeli
 */
class Wash {

    /**
     * 此方法是洗菜的行为
     */
    public static void doMethod() {
        System.out.println("洗好了一条鱼,洗干净一只鸡,洗完了一头猪....");
    }

}

/**
 * 创建一个煮菜的类
 * @author Liudeli
 */
public class Cook {

    /**
     * 此方法是煮菜的行为
     */
    public static void doMethod() {
        Food.doMethod();
        Wash.doMethod();
        System.out.println("煮好了一条鱼,煮熟了一只鸡,烤完了一头猪....");
    }

    /**
     * 模拟餐饮 测试程序
     * @author Liudeli
     */
    public static void main(String[] args) {
        Cook.doMethod();
    }
}

运行结果:
这里写图片描述


以下是迪米特法则案例:

/**
 * 定义一个买菜类
 * @author Liudeli
 */
class Food {

    /**
     * 此方法是买菜的行为
     */
    public static void doMethod() {
        System.out.println("买了一条鱼,买了一只鸡,买了一头猪....");
    }

}

/**
 * 创建一个洗菜的类
 * @author Liudeli
 */
class Wash {

    /**
     * 此方法是洗菜的行为
     */
    public static void doMethod() {
        System.out.println("洗好了一条鱼,洗干净一只鸡,洗完了一头猪....");
    }

}

/**
 * 创建一个煮菜的类
 * @author Liudeli
 */
public class Cook2 {

    /**
     * 此方法是煮菜的行为
     */
    public static void doMethod() {
        System.out.println("煮好了一条鱼,煮熟了一只鸡,烤完了一头猪....");
    }

    /**
     * 模拟餐饮 测试程序
     * @author Liudeli
     */
    public static void main(String[] args) {
        Food.doMethod();
        Wash.doMethod();
        Cook2.doMethod();
    }
}

运行结果,和上面一模一样:
这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006