设计原则(5):迪米特原则

迪米特原则这么说:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦 合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知 道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。
举个例子:体育老师要求体育委员统计班级的学生总数:
类图
体育老师类的代码实现
体育委员类代码实现
女生类的实现
测试代码
这个例子有一个设计的问题,Teacher类既依赖的Girl类也依赖了GropuLeader类,这与我们的需求是不一致的,理论上Teacher类只需要依赖GropuLeader,然后GropuLeader类依赖Girl类。一似乎我么对其类图进行修改:
修改后的类图
修改后的老师实现
修改后的体育委员实现
测试代码
这样设计好了以后,就符合迪米特原则了,下面再来一个例子:模拟软件安装的过程:类图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样设计有一个不合适的点就是,Wizard类把太多的方法暴露给 InstallSoftware类,两者的朋友关系太亲密了,耦合关系变得异常牢固。如果要将Wizard类中的first方法返回值 的类型由int改为boolean,就需要修改InstallSoftware类,从而把修改变更的风险扩散开了。因此,这样的耦合是 极度不合适的,我们需要对设计进行重构,重构后的类图如图5-4所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。因此, 为了保持朋友类间的距离,在设计时需要反复衡量:是否还可以再减少public方法和属性,是否可以修改为 private、package-private(包类型,在类、方法、变量前不加访问权限,则默认为包类型)、protected等访问权 限,是否可以加上final关键字等。迪米特法则要求类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量 内敛,多使用private、package-private、protected等访问权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值