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

  • 相关阅读:
    filter过滤组件Grok 正则捕获
    Logstash 最佳实践配置语法
    【小记】Ubuntu 工具链升级 gcc 流程
    图数据集cora详解
    HGNN超图神经网络代码
    modelnet40数据集
    GCN代码解读(版本1)
    GCN代码解读(版本2:github版本)
    企业微信代开发自建应用开发
    企业微信服务商工具实现
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322210.html
Copyright © 2020-2023  润新知