1700469984
1700469985
private Police letterPolice=new Police();
1700469986
1700469987
//写信,封装,投递,一体化了
1700469988
1700469989
public void sendLetter(String context,String address){
1700469990
1700469991
//帮你写信
1700469992
1700469993
letterProcess.writeContext(context);
1700469994
1700469995
//写好信封
1700469996
1700469997
letterProcess.fillEnvelope(address);
1700469998
1700469999
//警察要检查信件了
1700470000
1700470001
letterPolice.checkLetter(letterProcess);
1700470002
1700470003
//把信放到信封中
1700470004
1700470005
letterProcess.letterInotoEnvelope();
1700470006
1700470007
//邮递信件
1700470008
1700470009
letterProcess.sendLetter();
1700470010
1700470011
}
1700470012
1700470013
}
1700470014
1700470015
只是增加了一个letterPolice变量的声明以及一个方法的调用,那这个写信的过程就变成这样:先写信、写信封,然后警察开始检查,之后才把信放到信封,最后发送出去,那这个变更对客户来说是透明的,他根本就看不到有人在检查他的邮件,他也不用了解,反正现代化的邮件系统都帮他做了,这也是他乐意的地方。
1700470016
1700470017
场景类还是完全相同,但是运行结果稍有不同,如下所示:
1700470018
1700470019
填写信的内容……Hello,It’s me,do you know who I am?I’m your old lover.I’d like to……
1700470020
1700470021
填写收件人地址及姓名……Happy Road No.666,God Province,Heaven
1700470022
1700470023
com.cbf4life.common3.LetterProcessImpl@15ff48b信件已经检查过了……
1700470024
1700470025
把信放到信封中……
1700470026
1700470027
邮递信件……
1700470028
1700470029
高层模块没有任何改动,但是信件却已经被检查过了。这正是我们设计所需要的模式,不改变子系统对外暴露的接口、方法,只改变内部的处理逻辑,其他兄弟模块的调用产生了不同的结果,确实是一个非常棒的设计。这就是门面模式。
1700470030
1700470031
1700470032
1700470033
[
上一页 ]
[ :1.700469984e+09 ]
[
下一页 ]