当前位置: 首页 > 后端技术 > Java

软件架构设计原则(LawofDemeterLoD)的得墨忒耳法则

时间:2023-04-02 00:00:01 Java

是指一个对象应该保持对其他对象的最少了解,也称为最少知识原则(LKP),尽量降低之间的耦合度类。Dimit原则主要强调:只与朋友交流,不与陌生人交流。出现在成员变量、方法输入输出参数中的类可以称为成员友元类,而出现在方法体中的类则不属于友元类。现在要设计一个权限系统,Boss需要查看当前在线发布的课程数量。这时候Boss需要找到TeamLeader统计,TeamLeader会把统计结果告诉Boss。接下来,让我们看一下代码。Course类的代码如下:publicclassCourse{}TeamLeader类的代码如下:publicclassTeamLeader{publicvoidcheckNumberOfCourses(ListcourseList){System.out.println("Thenumberof当前发布的课程是:“+courseList.size());}}Boss类代码如下:publicclassBoss{publicvoidcommandCheckNumber(TeamLeaderteamLeader){//模拟Boss一页一页向下,TeamLeader实时统计ListcourseList=newArrayList();for(inti=0;i<20;i++){Courselist.add(NewCourse());}TeamLeader.Checknumberofcourses(Courseelist);}}测试代码如下:PublicStaticVoidMaintMainmap(String[]args){老板boss=newBoss();TeamLeaderteamLeader=newTeamLeader();boss.commandCheckNumber(teamLeader);}写到这里,功能其实已经实现了,代码看起来没问题。根据迪米特原则,老板只要结果,不需要直接和课程沟通。TeamLeader统计数据需要引用Course对象。Boss和Course不是朋友,从下面的类图可以看出。修改下面的代码。TeamLeader类代码如下:publicclassTeamLeader{publicvoidcheckNumberOfCourses(){ListcourseList=newArrayList();for(inti=0;i<20;i++){newour(courseList.add());}System.out.println("目前发布的课程数为:"+courseList.size());}}Boss类的代码如下:再看下面的类图,Course和Boss已经没有关联了。学习软件设计原理一定不能形成强迫症。当遇到复杂的业务场景时,我们需要随机应变。本文为《汤姆炸弹建筑》原创,转载请注明出处。科技在于分享,我分享我的快乐!如果本文对您有帮助,请关注并点赞;有什么建议也可以留言或私信。您的支持是我坚持创作的动力。关注微信公众号“汤姆炸弹架构”,获取更多技术干货!【推荐】汤姆炸弹架构:收藏此文相当于收藏一本《设计模式》书其他设计原则汤姆炸弹架构:开闭原则(OCP)汤姆炸弹架构:单一职责(SimpleResponsibilityPrinciple,SRP)汤姆炸弹架构:接口隔离原则(InterfaceSegregationPrinciple,ISP)汤姆炸弹架构:里氏替换原则(LiskovSubstitutionPrinciple,LSP)汤姆炸弹架构:综合重用原则(Composite/聚合重用原则,CARP)