7.3 装饰器(Decorator)模式

    我们知道,要解决代码重复问题,我们还可以使用合成。另外,为了保证作出的改变对客户对象透明,新添的类型应该保持同样接口。如果按照这个想法来设计,这会是一种什么样的结构呢?

    7.3.1 类图

    让我们先画出UML静态类如图7-2所示。

    figure_0115_0106

    图7-2

    在静态类图中,LogRepository对象聚合了一个GenericRepository的对象,并且LogRepository实现了GenericRepository接口,它备份完之前的数据状态,然后把请求转发给GenericRepository的对象去做更新操作。