打字猴:1.700455794e+09
1700455794 //清查女生数量
1700455795
1700455796 public void countGirls(List<Girl>listGirls){
1700455797
1700455798 System.out.println(“女生数量是:”+listGirls.size());
1700455799
1700455800 }
1700455801
1700455802 }
1700455803
1700455804 老师类和体育委员类都对女生类产生依赖,而且女生类不需要执行任何动作,因此定义一个空类,其实现过程如代码清单5-3所示。
1700455805
1700455806 代码清单5-3 女生类
1700455807
1700455808 public class Girl{
1700455809
1700455810 }
1700455811
1700455812 故事中的三个角色都已经有了,再定义一个场景类来描述这个故事,其实现过程如代码清单5-4所示。
1700455813
1700455814 代码清单5-4 场景类
1700455815
1700455816 public class Client{
1700455817
1700455818 public static void main(String[]args){
1700455819
1700455820 Teacher teacher=new Teacher();
1700455821
1700455822 //老师发布命令
1700455823
1700455824 teacher.commond(new GroupLeader());
1700455825
1700455826 }
1700455827
1700455828 }
1700455829
1700455830 运行结果如下所示:
1700455831
1700455832 女生数量是:20
1700455833
1700455834 体育委员按照老师的要求对女生进行了清点,并得出了数量。我们回过头来思考一下这个程序有什么问题,首先确定Teacher类有几个朋友类,它仅有一个朋友类——GroupLeader。为什么Girl不是朋友类呢?Teacher也对它产生了依赖关系呀!朋友类的定义是这样的:出现在成员变量、方法的输入输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类,而Girl这个类就是出现在commond方法体内,因此不属于Teacher类的朋友类。迪米特法则告诉我们一个类只和朋友类交流,但是我们刚刚定义的commond方法却与Girl类有了交流,声明了一个List<Girls>动态数组,也就是与一个陌生的类Girl有了交流,这样就破坏了Teacher的健壮性。方法是类的一个行为,类竟然不知道自己的行为与其他类产生依赖关系,这是不允许的,严重违反了迪米特法则。
1700455835
1700455836 问题已经发现,我们修改一下程序,将类图稍作修改,如图5-2所示。
1700455837
1700455838
1700455839
1700455840
1700455841 图5-2 修改后的类图
1700455842
1700455843 在类图中去掉Teacher对Girl类的依赖关系,修改后的Teacher类如代码清单5-5所示。
[ 上一页 ]  [ :1.700455794e+09 ]  [ 下一页 ]