首页 > 编程笔记 > Java笔记

装饰器模式在Spring源码中的应用

在 Spring 中,TransactionAwareCacheDecorator 类相当于装饰器模式中的抽象装饰角色,主要用来处理事务缓存,代码如下。
public class TransactionAwareCacheDecorator implements Cache {
    private final Cache targetCache;
    /**
      * Create a new TransactionAwareCache for the given target Cache.
      * @param targetCache the target Cache to decorate
      */
    public TransactionAwareCacheDecorator(Cache targetCache) {
      Assert.notNull(targetCache, "Target Cache must not be null");
      this.targetCache = targetCache;
    }
    /**
      * Return the target Cache that this Cache should delegate to.
      */
    public Cache getTargetCache() {
      return this.targetCache;
    }
    ......
}
TransactionAwareCacheDecorator 就是对 Cache 的一个包装。

下面再来看一个 MVC 中的装饰器模式:HttpHeadResponseDecorator 类,相当于装饰器模式中的具体装饰角色。
public class HttpHeadResponseDecorator extends ServerHttpResponseDecorator{
    public HttpHeadResponseDecorator(ServerHttpResponse delegate){
        super(delegate);
    }
    ...
}

所有教程

优秀文章