1700455894
1700455895
//产生一个女生群体
1700455896
1700455897
List<Girl>listGirls=new ArrayList<Girl>();
1700455898
1700455899
//初始化女生
1700455900
1700455901
for(int i=0;i<20;i++){
1700455902
1700455903
listGirls.add(new Girl());
1700455904
1700455905
}
1700455906
1700455907
Teacher teacher=new Teacher();
1700455908
1700455909
//老师发布命令
1700455910
1700455911
teacher.commond(new GroupLeader(listGirls));
1700455912
1700455913
}
1700455914
1700455915
}
1700455916
1700455917
对程序进行了简单的修改,把Teacher中对List<Girl>的初始化移动到了场景类中,同时在GroupLeader中增加了对Girl的注入,避开了Teacher类对陌生类Girl的访问,降低了系统间的耦合,提高了系统的健壮性。
1700455918
1700455919
注意 一个类只和朋友交流,不与陌生类交流,不要出现getA().getB().getC().getD()这种情况(在一种极端的情况下允许出现这种访问,即每一个点号后面的返回类型都相同),类与类之间的关系是建立在类间的,而不是方法间,因此一个方法尽量不引入一个类中不存在的对象,当然,JDK API提供的类除外。
1700455920
1700455921
2.朋友间也是有距离的
1700455922
1700455923
人和人之间是有距离的,太远关系逐渐疏远,最终形同陌路;太近就相互刺伤。对朋友关系描述最贴切的故事就是:两只刺猬取暖,太远取不到暖,太近刺伤了对方,必须保持一个既能取暖又不刺伤对方的距离。迪米特法则就是对这个距离进行描述,即使是朋友类之间也不能无话不说,无所不知。
1700455924
1700455925
我们在安装软件的时候,经常会有一个导向动作,第一步是确认是否安装,第二步确认License,再然后选择安装目录……这是一个典型的顺序执行动作,具体到程序中就是:调用一个或多个类,先执行第一个方法,然后是第二个方法,根据返回结果再来看是否可以调用第三个方法,或者第四个方法,等等,其类图如图5-3所示。
1700455926
1700455927
1700455928
1700455929
1700455930
图5-3 软件安装过程类图
1700455931
1700455932
很简单的类图,实现软件安装的过程,其中first方法定义第一步做什么,second方法定义第二步做什么,third方法定义第三步做什么,其实现过程如代码清单5-8所示。
1700455933
1700455934
代码清单5-8 导向类
1700455935
1700455936
public class Wizard{
1700455937
1700455938
private Random rand=new Random(System.currentTimeMillis());
1700455939
1700455940
//第一步
1700455941
1700455942
public int first(){
1700455943
[
上一页 ]
[ :1.700455894e+09 ]
[
下一页 ]