zoukankan      html  css  js  c++  java
  • 迪米特法则(设计模式_13)

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


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

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

    /**
     * 定义一个买菜类
     * @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

  • 相关阅读:
    Kafka如何保证读写的跨分区与会话
    Kafka topic中的partition的leader选举
    Kafka为什么这么快
    sqoop导入导出
    为什么要用redis去重
    bypass SortShuffleManager的bypass运行机制
    大数据常用端口号
    vector基础
    【拓扑排序】
    【POJ】Crazy Search(hash)
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322210.html
Copyright © 2011-2022 走看看