1700469877
把信放到信封中……
1700469878
1700469879
邮递信件……
1700469880
1700469881
我们回过头来看看这个过程,它与高内聚的要求相差甚远,更不要说迪米特法则、接口隔离原则了。你想想,你要知道这4个步骤,而且还要知道它们的顺序,一旦出错,信就不可能邮寄出去,这在面向对象的编程中是极度地不适合,它根本就没有完成一个类所具有的单一职责。
1700469882
1700469883
还有,如果信件多了就非常麻烦,每封信都要这样运转一遍,非得累死,更别说要发个广告信了,那怎么办呢?还好,现在邮局开发了一个新业务,你只要把信件的必要信息告诉我,我给你发,我来完成这4个过程,只要把信件交给我就成了,其他就不要管了。非常好的方案!我们来看类图,如图23-2所示。
1700469884
1700469885
1700469886
1700469887
1700469888
图23-2 增加现代化邮局的类图
1700469889
1700469890
这还是比较简单的类图,增加了一个ModenPostOffice类,负责对一个比较复杂的信件处理过程的封装,然后高层模块只要和它有交互就成了,如代码清单23-4所示。
1700469891
1700469892
代码清单23-4 现代化邮局
1700469893
1700469894
public class ModenPostOffice{
1700469895
1700469896
private ILetterProcess letterProcess=new LetterProcessImpl();
1700469897
1700469898
//写信,封装,投递,一体化了
1700469899
1700469900
public void sendLetter(String context,String address){
1700469901
1700469902
//帮你写信
1700469903
1700469904
letterProcess.writeContext(context);
1700469905
1700469906
//写好信封
1700469907
1700469908
letterProcess.fillEnvelope(address);
1700469909
1700469910
//把信放到信封中
1700469911
1700469912
letterProcess.letterInotoEnvelope();
1700469913
1700469914
//邮递信件
1700469915
1700469916
letterProcess.sendLetter();
1700469917
1700469918
}
1700469919
1700469920
}
1700469921
1700469922
这个类是什么意思呢,就是说现在有一个Hell Road PostOffice(地狱路邮局)提供了一种新型服务,客户只要把信的内容以及收信地址给他们,他们就会把信写好,封好,并发送出去。这种服务推出后大受欢迎,这多简单,客户减少了很多工作,谁不乐意呀。那我们看看客户是怎么调用的,如代码清单23-5所示。
1700469923
1700469924
代码清单23-5 场景类
1700469925
1700469926
public class Client{
[
上一页 ]
[ :1.700469877e+09 ]
[
下一页 ]