假設我有一個定義圖像對象的類。該圖像可以屬於一個相冊,並且該相冊可以屬於一個文件夾。這些數據存儲在MySQL中。數據也被緩存。在緩存中,它以非規範化的形式存儲,即文件夾保持跟蹤它們相關的圖像,並且相冊也是如此。這是出於性能原因而實施的。用於減少同一對象的不同類型集合中代碼重複的設計模式
無論何時現在創建照片,它都將被添加到緩存中的文件夾和相冊中。由於將代碼添加到緩存的代碼相同,只有緩存鍵發生更改,因此會創建一個名爲CachedImageSet的單獨對象。該文件夾和相冊使用它們的唯一ID和集合類型實例化CachedImageSet,並且它們調用CachedImageSet來添加和刪除圖像並獲取集合中的圖像列表。
我不希望客戶端代碼直接與CachedImageSet交互,所以我在CachedImageSet的方法的包裝文件夾和相冊類中有方法。這導致很多代碼重複。有沒有什麼設計模式可以幫助我擺脫這種重複?我使用PHP,MySQL和Redis(用於緩存層)。
我使用MVC ......我不想控制器使用CachedPostSet。相冊和文件夾的模型具有訪問CachedPostSet的包裝器。 – tabdulla
我不知道建議你使用什麼,但我認爲你必須測試自己,看看最適合你的是什麼,http://en.wikipedia.org/wiki/Design_pattern_(computer_science)#Classification_and_list – SAFAD