首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

门脸模式-《java与模式》

2012-08-30 
门面模式-《java与模式》1、医院的例子???????????? ??? 病人??????????? ?病人?????????? 病人?????????????

门面模式-《java与模式》

1、医院的例子

?

??????????? ??? 病人??????????? ?病人?????????? 病人

?

?????????????? ??????\???????????? |?????????? ?/

???????????????????????

??????????????????????????? ?? 接 ?待? 员

?

???????????????????????/????????????????????????? \

?

???????????????门 诊???????????????---??????????挂 号

?

????????????? ???? ? ?|???????????????????????????? ?|

?

??????????????? 划 价??????????????---?????? ???取??药

?

(少了两条线:接待员分别到划价和取药)

?

?

?

?

随着系统的不断改进和开发,它们会变得越来越复杂,系统会生成大量的类,这使得程序流程更难被理解。门面模式可为这些类提供一个简化的接口,从而简化访问这些类的复杂性,有时这种简化可能降低访问这些底层类的灵活性,但除了要求特别苛刻的客户端之外,它通常都可以提供所需的全部功能,当然,那些苛刻的用户仍然可以直接访问底层的类和方法。

门面模式(Facade)也被称为正面模式、外观模式,这种模式用于将一组复杂的类包装到一个简单的外部接口中。

现在考虑这样的场景:我们有一个顾客需要到饭店用餐,这就需要定义一个Customer类,并为该类定义一个haveDinner()方法。考虑该饭店有三个部分:收银部、厨师部和服务生部,用户就餐需要这三个部门协调才能完成。

本示例程序先定义一个收银部,用户需要调用该部门的pay()方法来支付用餐费。

程序清单:codes\09\9.3\Facade\PaymentImpl.java

程序还要定义一个服务生部门,用户需要调用该部门的serve ()方法来得到食物。

程序清单:codes\09\9.3\Facade\WaiterImpl.java

接下来实现Customer类的haveDinner()方法时,系统将有如下代码实现。

程序清单:codes\09\9.3\Facade\Customer.java

???图9.10? Java EE应用结构图

热点排行