本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7593467
建立时间:2006年5月29日




[设计模式]『蚂蚁学模式』之迪米特法则(LoD)
软件技术

lhwork 发表于 2007/1/10 9:39:58

一个对象应当对其他对象有尽可能少的了解。11.1 迪米特法则的各种表述:1)只与你直接的朋友们通信。2)不要跟“陌生人”说话。3)每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。11.2 狭义的迪米特法则如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。朋友圈的确定“朋友”条件:1)当前对象本身(this)2)以参量形式传入到当前对象方法中的对象3)当前对象的实例变量直接引用的对象4)当前对象的实例变量如果是一个聚集,那么聚集中的元素也都是朋友5)当前对象所创建的对象任何一个对象,如果满足上面的条件之一,就是当前对象的“朋友”;否则就是“陌生人”。缺点:会在系统里造出大量的小方法,散落在系统的各个角落。与依赖倒转原则互补使用11.3 迪米特法则与设计模式门面模式*调停者模式* 11.4 广义的迪米特法则迪米特法则的主要用意是控制信息的过载。在将迪米特法则运用到系统设计中时,要注意下面的几点:1)在类的划分上,应当创建有弱耦合的类。2)在类的结构设计上,每一个类都应当尽量降低成员的访问权限。3)在类的设计上,只要有可能,一个类应当设计成不变类。4)在对其他类的引用上,一个对象对其对象的引用应当降到最低。11.5 广义迪米特法则在类的设计上的体现1)优先考虑将一个类设置成不变类2)尽量降低一个类的访问权限3)谨慎使用Serializable4)尽量降低成员的访问权限5)取代C Struct一个类似于C Struct的Java类: 500)this.width=500'> public   class  Point500)this.width=500'>500)this.width=500'> 500)this.width=500'> {500)this.width=500'>   public   int  x;500)this.width=500'>   public   int  y;500)this.width=500'>} 一个好的设计: 500)this.width=500'>public class Point500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'>  private int x;500)this.width=500'>  private int y;500)this.width=500'>  public Point(int x, int y)500)this.width=500'>500)this.width=500'>  500)this.width=500'>{500)this.width=500'>    this.x = x;500)this.width=500'>    this.y = y;500)this.width=500'>  }500)this.width=500'>  public int getX()500)this.width=500'>500)this.width=500'>  500)this.width=500'>{500)this.width=500'>    return x;500)this.width=500'>  }500)this.width=500'>  public int getY()500)this.width=500'>500)this.width=500'>  500)this.width=500'>{500)this.width=500'>    return y;500)this.width=500'>  }500)this.width=500'>  public void setX(int x)500)this.width=500'>500)this.width=500'>  500)this.width=500'>{500)this.width=500'>    this.x = x;500)this.width=500'>  }500)this.width=500'>  public void setY(int y)500)this.width=500'>500)this.width=500'>  500)this.width=500'>{500)this.width=500'>    this.y = y;500)this.width=500'>  }500)this.width=500'>}11.6 广义迪米特法则在代码层次上的实现1)限制局域变量的有效范围


阅读全文(3677) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.078 second(s), page refreshed 144780616 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号