精华内容
下载资源
问答
  • 迪米特原则

    2020-09-19 14:21:08
    迪米特原则 迪米特原则:是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则,尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变更、方法的输入、输出参数中...

    迪米特原则


    迪米特原则:是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则,尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变更、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。


    现在来设计一个权限系统,Boss需要查看目前发布到线上的课程数量。这时候Boss要找到TeamLeader去进行统计。TeamLeader再把统计结果告诉Boss。接下来我们还是来看代码:
    根据迪米特原则,Boss只想要结果,不需要跟Course直接交流。而TeamLeader统计需要引用Course对象。Boss和Course并不是朋友。

    public class TeamLeader {
        public void checkNumberOfCourses(){
            List<Course> courseList = new ArrayList<>();
            for(int i = 0 ;i < 20;i++){
                courseList.add(new Course());
            }
            System.out.println("目前已发布的课程数量是:"+courseList.size());
        }
    }
    public class Course {
    }
    public class Boss {
        public void commandCheckNumber(TeamLeader teamLeader){
            teamLeader.checkNumberOfCourses();
        }
    }
    

    使用代码:

    public class LawOfDemeterTest {
        public static void main(String[] args) {
            Boss boss = new Boss();
            TeamLeader teamLeader = new TeamLeader();
            boss.commandCheckNumber(teamLeader);
        }
    }
    
    展开全文
  • 六大设计原则-迪米特原则

    千次阅读 2020-03-23 17:27:07
    迪米特原则 什么是迪米特原则? 一个对象应该对其他对象保持最少的了解。 为什么要使用迪米特原则? 面向对象语言是万物皆对象,类与类之间交互越频繁,类与类之间的关系也就越密切,这就是耦合,耦合度越高...

    1、开闭原则       
    2、接口隔离原则
    3、依赖倒置原则
    4、迪米特原则            
    5、里氏替换原则    
    6、单一职责原则

     

    迪米特原则

     

    什么是迪米特原则?

    一个对象应该对其他对象保持最少的了解。

     

    为什么要使用迪米特原则?

    面向对象语言是万物皆对象,类与类之间交互越频繁,类与类之间的关系也就越密切,这就是耦合,耦合度越高,当一个类发生改变时,对另一个类的影响也就越大。一个好的系统要做到高内聚低耦合,迪米特原则就是要降低类与类之间的耦合度。

     

    怎么样才算遵守迪米特原则?

    迪米特原则就是尽可能的降低类与类之间的耦合,我们要做到依赖别人更少、让别人了解更少,比如:去掉内部的依赖、降低访问修饰符的权限等等。

    展开全文
  • 设计原则之迪米特原则 1、 2、 3、 4、

    设计原则之迪米特原则

    1、概念

    • 狭义定义:迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP)。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

    • 广义定义:一个模块设计得好坏的一个重要的标志就是该模块在多大的程度上将自己的内部数据与实现有关的细节隐藏起来。信息的隐藏非常重要的原因在于,它可以使各个子系统之间脱耦,从而允许它们独立地被开发、优化、使用阅读以及修改。

    2、主张

    (1)在类的划分上,应该创建有弱耦合的类,即只与直接朋友交流:

    两个对象之间的耦合关系称之为朋友,耦合关系通常有依赖、关联、聚合和组成等。直接朋友则通常表现为关联、聚合和组成关系,即两个对象之间联系更为紧密,通常以成员变量,方法的参数和返回值的形式出现。而出现在方法体内部的类不属于朋友类。

    (2)在类的结构设计上,每一个类都应当尽量降低成员的访问权限;

    在设计时需要反复衡量:是否还可以再减少public方法和属性,是否可以修改为private、package-private(包类型,在类、方法、变量前不加访问权限,则默认为包类型)、protected等访问权限,是否可以加上final关键字等,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。

    (3)在类的设计上,只要有可能,一个类应当设计成不变类;

    (4)在对其他类的引用上,一个对象对其它对象的引用应当降到最低;

    (5)谨慎使用序列化功能;

    (6)不要暴露类成员,而应该提供相应的访问器(属性)。

    3、代码演示,简单示例

    /**
     * @Author: css
     * @Description: 迪米特原则
     * @Date:2019-07-29
     */
    public class Demeter {
    
            public static void main(String[] args) {
                Phone phone = new Phone();
                phone.listenSongs();
            }
    
        }
        /**
         * 手机内有App,App可以听歌
         */
        class Phone {
    
            private App app = new App();
    
            public void listenSongs() {
                app.listen();
            }
    
        }
        /**
        * App内才可以看到歌曲名称
        */
        class App {
            
            private Song song = new Song("一个像夏天一个像秋天");
    
            public void listen() {
                System.out.println(song.getTitle());
            }
    
        }
        /**
        * 歌曲详情
        */
        class Song {
    
            private String title;
    
            public Song(String title) {
                this.title = title;
            }
            public String getTitle() {
                return title;
            }
            public void setTitle(String title) {
                this.title = title;
            }
    
    }
    

    4、优缺点

    • 优点:让类之间解耦,降低耦合度,提高类的复用性,使类具有很好的可读性和可维护性。
    • 缺点:会产生大量的中转类或跳转类,导致系统的复杂度提高,而且通信效率会降低。
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,666
精华内容 11,066
关键字:

迪米特原则