【发布时间】:2011-09-14 15:03:45
【问题描述】:
假设我有一个定义图像对象的类。图片可以属于相册,相册可以属于文件夹。此数据存储在 MySQL 中。数据也被缓存。在缓存中,它以非规范化的形式存储,即文件夹跟踪与其关联的图像,相册也是如此。这是出于性能原因而实施的。
现在无论何时创建照片,它都会同时添加到缓存中的文件夹和相册中。因为将照片添加到缓存中的代码相同,并且只有缓存键发生变化,所以创建了一个名为 CachedImageSet 的单独对象。文件夹和相册实例化 CachedImageSet 及其唯一的 id 和集合的类型,它们调用 CachedImageSet 来添加和删除图像并获取集合中的图像列表。
我不希望客户端代码直接与 CachedImageSet 交互,因此我在文件夹和相册类中有方法,它们是 CachedImageSet 方法的包装器。这会导致大量代码重复。是否有任何设计模式可以帮助我摆脱这种重复?我正在使用 PHP、MySQL 和 Redis(用于缓存层)。
【问题讨论】:
标签: php oop design-patterns redis