在系统设计中应用迪米特法则_软件设计原则口诀

在系统设计中应用迪米特法则_软件设计原则口诀  迪米特原则又叫 迪米特法则/最少知道原则。现在我们给出迪米特原则的定义:一个对象应该对其他对象保持最少的了解。它的优点是降低了类之间的耦合。它强调只和朋友交流,不和陌生人说话。其中朋友是指出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。 下面我们通过代码,更好的解释迪米特原则。比如我是一个公司的老板,我开了一家网上课程网站,我让我的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

  下面我们通过代码,更好的解释迪米特原则。

比如我是一个公司的老板,我开了一家网上课程网站,我让我的TeamLeader帮我统计一下,目前该公司在线课程有多少个?怎么办呢,转化为代码如下:

package com.zybank.design.principle.demeter;

import java.util.ArrayList;
import java.util.List;

public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader){
        List<Course> list = new ArrayList<Course>();
        for (int i =0;i<200;i++){
            list.add(new Course());
        }
        teamLeader.checkNumberOfCourses(list);
    }
}

Jetbrains全家桶1年46,售后保障稳定

package com.zybank.design.principle.demeter;

import java.util.List;

public class TeamLeader {
    public void checkNumberOfCourses(List list){
        System.out.println("总有课程"+list.size());
    }
}
package com.zybank.design.principle.demeter;

public class Course {
}

在写一个测试类:

package com.zybank.design.principle.demeter;

public class Test {
    public static void main(String[] args){
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }

}

 

大家感觉上述代码怎么样?有没有什么问题?当然有问题了,这样写的代码就是违背了我们现在讲述的迪米特原则。Course这个类就不应该出现在Boss类里。老板让TeamLeader去查一下课程的数量,其他的他并不想关心。所以我们的代码可以做进一步的优化。

package com.zybank.design.principle.demeter;


public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader){
        teamLeader.checkNumberOfCourses();
    }
}
package com.zybank.design.principle.demeter;

import java.util.ArrayList;
import java.util.List;

public class TeamLeader {
    public void checkNumberOfCourses(){
        List<Course> list = new ArrayList<>();
        for (int i =0;i<200;i++){
            list.add(new Course());
        }
        System.out.println("总有课程"+list.size());
    }
}
package com.zybank.design.principle.demeter;

public class Course {
}

而我们的测试类是不用改变的:

package com.zybank.design.principle.demeter;

public class Test {
    public static void main(String[] args){
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }

}

经过上述代码的优化,相信我们对迪米特原则有了一个很清楚的认识。那我们在实际的开发中用起来吧。

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234303.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm2021.11.3版本激活-激活码分享

    (pycharm2021.11.3版本激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月29日
    37
  • Docker针对运行JAVA程序的优化

    Docker针对运行JAVA程序的优化

    2021年5月30日
    113
  • Java程序员烂大街了吗?是,也不是

    Java程序员烂大街了吗?是,也不是Java程序员烂大街了吗?有网友吐槽精通的人少,半吊子的人烂大街。半吊子程序员确实不少,除了自身学习有关,还跟培训机构教学有关,工作后能不能继续学造有关,现在学编程的越来越多,所以企业要求相对也比前些年要高很多。  企业想招一个合格的Jjava程序员很不容易。烂大街的说法有网友不怎么赞同,因为市场自己会过,留下好的淘汰掉不合格的。不合格的程序员有一些会放弃,从事别的工作,也有的会坚持学习达到市场的要求。只不过还有很多人在选择进入这个行业而已,很正常的现象。  以前可能知道大概会怎么使用就能找份不

    2022年7月7日
    313
  • 后端:Layui实现文件上传功能

    后端:Layui实现文件上传功能

    2020年11月14日
    231
  • Zabbix使用snmptrap方式监控vCenter Server「建议收藏」

    Zabbix使用snmptrap方式监控vCenter Server「建议收藏」Zabbix使用snmptrap方式监控vCenterServer6.5简介本人介绍如何通过snmptrap的方式发送vcenter上的告警到zabbixserver,并通过zabbixserver发送邮件告警通知,配置好后,邮箱收到的告警格式如下一、前置条件1)安装好zabbix-server,zabbix-server节点安装好net-snmp软件2)下载vCenterServer的mib文件登录vmware官网https://customerconnect.vmware.

    2022年8月20日
    4
  • groupid和artifactid的区别是啥(中人是指哪些人)

    最近用Maven创建工程,一直搞不懂Maven中的GroupID和ArtifactID是什么,直到看了网上的一篇文章才明白,在此与大家分享分享 本文转载于一问网友的回答(略修改) 地址:https://zhidao.baidu.com/question/1639120287056394340.html    GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的…

    2022年4月16日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号