GoF设计模式之十 Facade- -

来源:百度文库 编辑:神马文学网 时间:2024/04/29 02:35:10

 

                                      

    B5) Facade(外观模式)
    定义:提供一个统一的连接子系统中一套接口的接口。外观模式定义了一个更高等级的接口使得子系统更加容易使用。
    又是一个使用频率LV5的模式,在现在WorkFrame大红大紫的形势下,的确太常见了。来看看比较熟悉的struts,其中ActionServlet.java的一段代码:
    protected void process(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
        ModuleUtils.getInstance().selectModule(request, getServletContext());  //interface1
        ModuleConfig config = getModuleConfig(request);  //interface2
        RequestProcessor processor = getProcessorForModule(config);  //interface3
        if (processor == null) {
           processor = getRequestProcessor(config);
        }
        processor.process(request, response);
    }

    process函数中用到了interface1、2、3这三个子系统,就是一套接口,所谓一套,就是固定的,如果没有process函数,那每次需要这部分处理时都要重复上述代码。现在,将这部分内容合并,并提供了一个统一的process接口,大大降低了复杂性,使用方便,代码灵活易于修改,这样称之为外观模式。代码实现有点类似建造者模式,区别在于,建造者模式目的在于以相同的构建过程通过不同的建造者得到不同的结果,而外观模式并不需要不同的建造者,也不希望得到不同的结果,只是简单的将几个接口合并成高一级的一个接口,不影响原有的结果,目的是使调用变得更加容易。


   参考:
1、 http://www.jdon.com/designpatterns/designpattern_Facade.htm(中文、java实例)
2、 http://www.dofactory.com/Patterns/PatternFacade.aspx(英文、C#实例、UML)
3、 http://www.techscore.com/tech/DesignPattern/Facade.html(日文、java实例、UML)推荐