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

  • 相关阅读:
    day50_BOS项目_02
    day51_BOS项目_03
    Criteria 和 DetachedCriteria 的区别
    ecplise中如何关闭Tomcat的自动重启/加载
    Tomcat的Start可以启动起来,但是Debug启动突然启动不起来,一直停在 Class<T>.getDeclaredConstructors0(boolean) line: not available [native method] 的解决办法
    windows下读取Linux分区软件
    15 条实用 Linux/Unix 磁带管理命令
    Nginx安装与配置文件解析
    专注docker安全:Security Scanning
    清除linux系统的多余引导
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322210.html
Copyright © 2011-2022 走看看