• 迪米特法则(设计模式_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

  • 相关阅读:
    ZUCC2129 The Tree of Power(树形DP)
    ZUCC Flower Name(01字典树)
    JDBC 测试01
    CF1355E Restorer Distance(三分)
    CF1352E Special Permutation(桶排序+前缀和)
    CF1350E Orac and Game of Life(BFS)
    CF1350D Orac and Medians(找规律)
    Python机器学习(五十七)SciPy 积分
    Python机器学习(五十六)SciPy fftpack(傅里叶变换)
    Python机器学习(五十五)SciPy 常量
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322210.html
Copyright © 2020-2023  润新知