设计模式之迪米特原则

来源:互联网 发布:手机淘宝怎么扫一扫 编辑:程序博客网 时间:2024/06/09 19:55

六大设计模式原则 之迪米特原则

迪米特原则又称为最少知识原则

一、定义

 迪米特原则:指一个对象应该对于其他对象有最少的了解。

        理解:简单来说一个类对自己所调用或者耦合的类有最少的了解,被调用的类内部实现与该类无关。

二、好处

可以有效的降低类之间的耦合度。

三、代码示例

 

我想大家都很熟悉,高三的时候因为课程紧张,尤其是一些所谓“学习狂人”(多为女生),经常以各种理由不上体育课,老师也不好说什么,只好每节课都认体育委员清点可以上课的人数,现在我们就来实现这一功能!

 

 首先定义一个女生实体类,添加一个布尔指 判断是否可以上课

 

 

然后是体育委员类 用于判断该女生是否可以上课,并统计总量sum

 

 

再然后是老师类,实现叫体育委员清点人数的方法

 

 

最后是场景类

 

 

下面是结果:

报告老师,一共有12名女生无法参加体育课!

好,我们看看这段代码有问题吗?没有!有!

其实是有问题的,我们看老师这个类,他需要两个类来帮助实现,一个是女生,一个是体育委员,要叫体育委员清点人数,那么体育委员类不可少,但是女生呢,老师不需要自己去清点,那么为什么老师要耦合女生呢,这就有一些问题了;还有,在老师类中我们共调用了2个体育委员的方法,这使我们对于体育委员类的了解更多了,这样也不是我们这个原则所提倡的,所以这段代码可以进行优化:

 

首先还是女生类,没有变化,也不可能有变化

 

 

接着是体育委员类,我们将它的所有方法都设置为private的,只有一个方法设置为public的,用于老师的调用。

 

 

然后是老师类,现在老师类就干净了

 

最后还是场景类,我们将女生的初始化放在场景类中,由体育委员来寻找女生,这与老师无关

 

 

好了,我们运行一下:

报告老师,一共有12名女生无法参加体育课!

结果毫无问题!
总结一下:这样设计我们有哪些好处呢?
  1. 我们取消了老师对于女生的联系,降低了耦合度
  2. 我们减少了老师对于体育委员的了解,只调用了一个方法
  3. 整个设计更符合面向对象的设计
原创粉丝点击