91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中迪米特法則是什么

發布時間:2022-02-09 09:59:45 來源:億速云 閱讀:105 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Java中迪米特法則是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

    定義

    迪米特法則(Law of Demeter, LoD)是1987年秋天由lan holland在美國東北大學一個叫做迪米特的項 目設計提 出的,它要求一個對象應該對其他對象有最少的了解,所以迪米特法則又叫做最少知識原則。

    案例

    需求

    有一個公司,下屬有各個部門,現要求打印出公司員工的ID和部門員工的ID

    方案一

    定義公司員工類

    /**
     * 公司員工
     * @author:liyajie
     * @createTime:2022/2/8 11:52
     * @version:1.0
     */
    @Data
    public class CompanyEmployee {
        private String id;
    }

    定義公司管理類

    /**
     * 公司員工管理員
     * @author:liyajie
     * @createTime:2022/2/8 11:51
     * @version:1.0
     */
    public class CompanyManager {
    
        public List<CompanyEmployee> getCompanyEmployee(){
            List<CompanyEmployee> list = new ArrayList<CompanyEmployee>();
            for (int i = 0; i < 5; i++) {
                CompanyEmployee companyEmployee = new CompanyEmployee();
                companyEmployee.setId("公司員工,id是" + i);
                list.add(companyEmployee);
            }
            return list;
        }
    }

    定義部門員工類

    /**
     * 部門員工
     * @author:liyajie
     * @createTime:2022/2/8 11:53
     * @version:1.0
     */
    @Data
    public class DempartEmployee {
        private String id;
    }

    定義部門管理類

    /**
     * 部門員工管理員
     * @author:liyajie
     * @createTime:2022/2/8 11:52
     * @version:1.0
     */
    public class DepartmentManager {
    
        /**
         * 獲取部門員工信息
         * @author: liyajie
         * @date: 2022/2/8 12:29
         * @param
         * @return java.util.List<com.lyj.mode.principle.demeter.DempartEmployee>
         * @exception:
         * @update:
         * @updatePerson:
         **/
        public List<DempartEmployee> getDempartEmployee(){
            List<DempartEmployee> list = new ArrayList<DempartEmployee>();
            for (int i = 0; i < 5; i++) {
                DempartEmployee dempartEmployee = new DempartEmployee();
                dempartEmployee.setId("部門員工,id是" + i);
                list.add(dempartEmployee);
            }
            return list;
        }
    
        public void pringAllEmployee(CompanyManager companyManager){
            List<DempartEmployee> dempartEmployeeList = getDempartEmployee();
            for (DempartEmployee dempartEmployee : dempartEmployeeList) {
                System.out.println(dempartEmployee.getId());
            }
            System.out.println("--------------------------------");
            List<CompanyEmployee> companyEmployeeList = companyManager.getCompanyEmployee();
            for (CompanyEmployee companyEmployee : companyEmployeeList) {
                System.out.println(companyEmployee.getId());
            }
        }
    
    }

    定義測試類

    /**
     * 測試類
     * @author:liyajie
     * @createTime:2022/2/8 11:53
     * @version:1.0
     */
    public class Test1 {
        public static void main(String[] args) {
            new DepartmentManager().pringAllEmployee(new CompanyManager());
        }
    }

    查看結果

    Java中迪米特法則是什么

    方案二

    該方案與方案一的區別只有兩個地方,具體如下: 修改后的公司管理類,新增打印公司員工id的方法

    /**
     * 公司員工管理員
     * @author:liyajie
     * @createTime:2022/2/8 11:51
     * @version:1.0
     */
    public class CompanyManagerNew {
    
        /**
         * 查詢公司員工
         * @author: liyajie
         * @date: 2022/2/8 12:42
         * @param
         * @return java.util.List<com.lyj.mode.principle.demeter.CompanyEmployee>
         * @exception:
         * @update:
         * @updatePerson:
         **/
        public List<CompanyEmployee> getCompanyEmployee(){
            List<CompanyEmployee> list = new ArrayList<CompanyEmployee>();
            for (int i = 0; i < 5; i++) {
                CompanyEmployee companyEmployee = new CompanyEmployee();
                companyEmployee.setId("公司員工,id是" + i);
                list.add(companyEmployee);
            }
            return list;
        }
    
        /**
         * 打印公司員工id
         * @author: liyajie
         * @date: 2022/2/8 12:41
         * @param
         * @return void
         * @exception:
         * @update:
         * @updatePerson:
         **/
        public void printCompanyEmployee(){
            List<CompanyEmployee> list = getCompanyEmployee();
            for (CompanyEmployee companyEmployee: list) {
                System.out.println(companyEmployee.getId());
            }
        }
    }

    修改后的部門管理類

    /**
     * 部門員工管理員
     * @author:liyajie
     * @createTime:2022/2/8 11:52
     * @version:1.0
     */
    public class DepartmentManagerNew {
    
        /**
         * 獲取部門員工信息
         * @author: liyajie
         * @date: 2022/2/8 12:29
         * @param
         * @return java.util.List<com.lyj.mode.principle.demeter.DempartEmployee>
         * @exception:
         * @update:
         * @updatePerson:
         **/
        public List<DempartEmployee> getDempartEmployee(){
            List<DempartEmployee> list = new ArrayList<DempartEmployee>();
            for (int i = 0; i < 5; i++) {
                DempartEmployee dempartEmployee = new DempartEmployee();
                dempartEmployee.setId("部門員工,id是" + i);
                list.add(dempartEmployee);
            }
            return list;
        }
    
        public void pringAllEmployee(CompanyManagerNew companyManagerNew){
            List<DempartEmployee> dempartEmployeeList = getDempartEmployee();
            for (DempartEmployee dempartEmployee : dempartEmployeeList) {
                System.out.println(dempartEmployee.getId());
            }
            System.out.println("--------------------------------");
            companyManagerNew.printCompanyEmployee();
        }
    
    }

    測試類

    /**
     * 測試類
     * @author:liyajie
     * @createTime:2022/2/8 11:53
     * @version:1.0
     */
    public class Test2 {
        public static void main(String[] args) {
            new DepartmentManagerNew().pringAllEmployee(new CompanyManagerNew());
        }
    }

    結果

    Java中迪米特法則是什么

    對比分析

    方案一,在部門管理類DepartmentManager的方法pringAllEmployee中打印了公司員工id,使用到了類CompanyEmployee,該類既不是DepartmentManager的內部屬性,也不是方法的入參和返回參數,違反了迪米特原則

    Java中迪米特法則是什么

    方案二,在公司管理類中新增打印公司員工id的方法,并對外提供,在部門管理類DepartmentManager的方法pringAllEmployee中進行了調用,符合迪米特原則

    Java中迪米特法則是什么

    感謝各位的閱讀!關于“Java中迪米特法則是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    阳曲县| 香格里拉县| 祁连县| 罗田县| 西昌市| 孙吴县| 阿拉善盟| 北碚区| 泾源县| 兴义市| 灌云县| 都江堰市| 芮城县| 金溪县| 梧州市| 宜良县| 澄城县| 德昌县| 玛曲县| 两当县| 高阳县| 盐城市| 阜新市| 合肥市| 和顺县| 文水县| 澜沧| 广汉市| 清远市| 阜南县| 南投县| 金川县| 扬中市| 阿合奇县| 五指山市| 金川县| 绍兴市| 赤水市| 阿巴嘎旗| 宜良县| 根河市|