六大设计原则之迪比特法则

阅读: 评论:0

六大设计原则之迪比特法则

六大设计原则之迪比特法则

什么是迪比特法则

  又称最小知识原则,如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用,其目的是降低类之间的耦合度。通俗的讲是:与你的直接朋友交谈,不跟“陌生人”说话。
  迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。

   迪比特法则应当是双向的:

  • 如无必要,软件实体不要访问其他软件实体。
  • 如无必要,软件实体也不要把自己暴露给其他软件实体。

迪比特法则的好处

  • 降低了软件实体之间的耦合性,从而降低了代码修改可能波及的范围,提高了可扩展性和灵活性
  • 提高了代码的可读性
  • 提高了可维护性

实现方法

列举一些工作中实际碰到的,会随时补充其他规则:

  • 如果一个对象只是当前类的某个方法会访问,那么就不要把当前对象作为类的成员变量,因为这样会使这个成员变量对整个类可见
  • 子类才会使用的变量不要提升到父类中

案例1

原始实现

public class Transformer {public Transformer(List<String> columnList,  int []data, String dateColumn) {//具体代码省略}public void transform() {//具体代码省略}public process() {//具体代码省略}
}public class ComputeDiff extends Transformer {public void transform() {//具体代码省略}
}public class OneHot extends Transformer {public void transform() {//具体代码省略}
}

说明:

  1. Transformer的构造方法中的data参数实际上只有transform方法会使用,其他方法(如process)并不使用
  2. Transformer的构造方法中的dateColumn参数只有子类ComputeDiff会用,Transformer和子类OneHot并不使用

调整后的代码

public class Transformer {public Transformer(List<String> columnList) {//具体代码省略}public void transform(int []data) {//具体代码省略}public process() {//具体代码省略}
}public class ComputeDiff extends Transformer {public ComputeDiff(List<String> columnList,  String dateColumn) {super(columnList);//具体代码省略}public void transform(int []data) {//具体代码省略}
}public class OneHot extends Transformer {public void transform(int []data) {//具体代码省略}
}

本文发布于:2024-02-02 06:08:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170682528141869.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:法则   迪比特   原则
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23