1700469836
1700469837
在这种环境下,最累的是写信人,为了发送一封信要有4个步骤,而且这4个步骤还不能颠倒,我们先看看这个过程如何通过程序表现出来,有人开始用这个过程写信了,如代码清单23-3所示。
1700469838
1700469839
代码清单23-3 场景类
1700469840
1700469841
public class Client{
1700469842
1700469843
public static void main(String[]args){
1700469844
1700469845
//创建一个处理信件的过程
1700469846
1700469847
ILetterProcess letterProcess=new LetterProcessImpl();
1700469848
1700469849
//开始写信
1700469850
1700469851
letterProcess.writeContext(“Hello,It’s me,do you know who I am?I’m
1700469852
1700469853
your old lover.I’d like to……”);
1700469854
1700469855
//开始写信封
1700469856
1700469857
letterProcess.fillEnvelope(“Happy Road No.666,God Province,Heaven”);
1700469858
1700469859
//把信放到信封里,并封装好
1700469860
1700469861
letterProcess.letterInotoEnvelope();
1700469862
1700469863
//跑到邮局把信塞到邮箱,投递
1700469864
1700469865
letterProcess.sendLetter();
1700469866
1700469867
}
1700469868
1700469869
}
1700469870
1700469871
运行结果如下所示:
1700469872
1700469873
填写信的内容……Hello,It’s me,do you know who I am?I’m your old lover.I’d like to……
1700469874
1700469875
填写收件人地址及姓名……Happy Road No.666,God Province,Heaven
1700469876
1700469877
把信放到信封中……
1700469878
1700469879
邮递信件……
1700469880
1700469881
我们回过头来看看这个过程,它与高内聚的要求相差甚远,更不要说迪米特法则、接口隔离原则了。你想想,你要知道这4个步骤,而且还要知道它们的顺序,一旦出错,信就不可能邮寄出去,这在面向对象的编程中是极度地不适合,它根本就没有完成一个类所具有的单一职责。
1700469882
1700469883
还有,如果信件多了就非常麻烦,每封信都要这样运转一遍,非得累死,更别说要发个广告信了,那怎么办呢?还好,现在邮局开发了一个新业务,你只要把信件的必要信息告诉我,我给你发,我来完成这4个过程,只要把信件交给我就成了,其他就不要管了。非常好的方案!我们来看类图,如图23-2所示。
1700469884
1700469885
[
上一页 ]
[ :1.700469836e+09 ]
[
下一页 ]