CustomerFacade类以saveCustomData方法的形式提供了业务层次上的服务。客户AccountManager不是直接和子系统的每一个组件交互,而是使用了由CustomFacade对象提供的验证和保存客户数据的更高层次、更简单的接口(Figure7).

Figure7: Class Association with the Fa?ade Class in Place 。
在新的设计中,为了验证和保存客户数据,客户需要:
(1) 建立或获得外观对象CustomFacade的一个实例。
(2) 传递数据给CustomFacade实例进行验证和保存。
(3) 调用CustomFacade实例上的saveCustomData方法。
CustomFacade处理创建子系统中必要的对象并且调用这些对象上相应的验证、保存客户数据的方法这些细节问题。客户不再需要直接访问任何的子系统中的对象。
Figure8展示了新的设计的消息流图:

Figure 22.8: In the Revised Design, Clients Interact with the Fa?ade Instance to Interface with the Subsystem
重要提示:
下面是应用外观模式的注意事项:
(1) 在设计外观时,不需要增加额外的功能。
(2) 不要从外观方法中返回子系统中的组件给客户。例如:有一个下面的方法:
CreditCard getCreditCard()
会报漏子系统的细节给客户。应用就不能从应用外观模式中取得最大的好处。
(3)应用外观的目的是提供一个高层次的接口。因此,外观方法最适合提供特定的高层次的业务服务,而不是进行底层次的单独的业务执行。
