打字猴:1.70046986e+09
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
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
[ 上一页 ]  [ :1.70046986e+09 ]  [ 下一页 ]