设计模式之外观模式

外观模式: 为子系统的一组的接口提供一个一致的界面,此模式定义一个高层接口,此接口使得这一子系统更加容易使用。

1 外观模式的UML图 

设计模式之外观模式_第1张图片

(图片来源于网络,侵权删除) 

2 代码实现

外观模式比较简单,但应用较多,基于Tomcat的session就是外观模式使用的例子。为了更好地理解Tomcat以及外观模式,本文结合Tomcat源码来谈一下外观模式如何使用。

设计模式之外观模式_第2张图片

StandardSessionFacade为一个外观类, 该类中保存着StandardSession的引用。因此,StandardSession就为StandardSessionFacade的子系统(注意不是继承关系)。外界对StandardSession的访问便通过StandSessionFacade来进行。

 StandardSessionFacade主要代码如下

public class StandardSessionFacade implements HttpSession {

    // ----------------------------------------------------------- Constructors

    /**
     * Construct a new session facade.
     *
     * @param session The session instance to wrap
     */
    public StandardSessionFacade(HttpSession session) {
        this.session = session;
    }


    // ----------------------------------------------------- Instance Variables

    /**
     * Wrapped session object.
     */
    private final HttpSession   session;//外观类StandardSessionFacade保持着对子系统standardSession的引用
    //省略了部分代码
    //通过外观类来调用子系统中的方法
    @Override
    public long getCreationTime() {
        return session.getCreationTime();
    }


    @Override
    public String getId() {
        return session.getId();
    }


    @Override
    public long getLastAccessedTime() {
        return session.getLastAccessedTime();
    }


    @Override
    public ServletContext getServletContext() {
        // FIXME : Facade this object ?
        return session.getServletContext();
    }
}

 

 参考文献

《大话设计模式》

你可能感兴趣的:(tomcat,设计模式,tomcat源码,session,设计模式,外观模式)