外观模式就是 定义了一个将子系统的一组接口集成在一起的高级接口,用来提供一个一致的界面,通过这个界面,其他系统可以方便地调用子系统中的功能,而不需要关注子系统内部的变化。
生活例子说明:比如我们投资者,如果我们把钱投资去买股票,我们需要通过关注很多只股票来筛选出我们可以买的股票,筛选出来后买了还要时刻关注它以便在合适的时候卖出,这样很烦,这在软件中叫耦合度过高;如果我们投资基金,我们只需要关注基金涨跌,而实际帮我们操作的是基金经理人,我们不需要操心。
例子:现在要一个应用,他需要:
1.接受客户资料(账号,地址,信用卡资料)
2.验证客户输入的资料
3.保存客户的资料
这样,这个应用就需要3个类:Accent,Address和Creditcard。这三个类都有验证资料的isVaild方法,保存资料的save方法和接受输入资料的构造器。
这样的话我们只需要设计一个外观类,这个外观类中就有接受资料输入,验证资料和保存资料的功能(new3个对象,调用三个类中的),把资料放入外观类中,通过外观类对3个类进行操作即可。(AccountManger类就是客户类)
用了CustomerFacader类后客户类就不需要和子系统直接接触了,降低耦合度。
使用外观模式需要注意的事项:
1.在设计外观类时,不需要增加额外的功能。
2.不要从外观方法中返回子系统中的组件给客户。
3.外观方法最适合提供特定的高层次的业务服务,而不是进行低层次的单独的业务执行。