7.3 装饰器(Decorator)模式
我们知道,要解决代码重复问题,我们还可以使用合成。另外,为了保证作出的改变对客户对象透明,新添的类型应该保持同样接口。如果按照这个想法来设计,这会是一种什么样的结构呢?
让我们先画出UML静态类如图7-2所示。
图7-2
在静态类图中,LogRepository对象聚合了一个GenericRepository的对象,并且LogRepository实现了GenericRepository接口,它备份完之前的数据状态,然后把请求转发给GenericRepository的对象去做更新操作。