我有一個關於設計模式的小問題哪種設計模式可以做到這一點?
我有這兩個類從相同的類(doctrine_record)擴展,所以他們主要有相同的方法和功能,但是,他們現在有不同的屬性。我想創建一個包含2個類的總和屬性的包裝器,我記得有一個這樣的模式,但我一直在翻閱這本書,卻找不到它。我基本上試圖做的是map屬性,但是由於每個類都將它們的數據存儲在不同的表中,我必須經常爲每個表調用相同的方法(save()),因爲將會有大量的我是一些如何結婚的類,我不想爲每一對類我都寫完整的代碼。你有什麼建議,我該如何歸檔這個?
爲了讓自己更清楚,我將添加一個簡單的例子
我有這2
class Content extends doctrine_record
{
int content_id;
date create_date;
date modified_date;
int number_clicks;
Content_translations translations[];
}
class Content_translations extends doctrine_record
{
int translation_id;
int content_id;
string language;
string content;
string title;
}
,你可以看到,1 內容可以有N個Content_translations,因爲它變得一個非常重複的任務,與特定的翻譯工作,我需要一些特定的內容我想合併這兩個類,避免修改任何的2.
我試圖讓我告訴一個類(如果在運行時更好),我將它們合併爲2個類,因此如果我實例化某個內容(讓我們調用這個新的類部分),它將具有這兩個類的屬性。如果我調用save()方法,我不得不在兩個對象上調用它,我記得有一個這樣的模式,但我不記得它的名字。
什麼基本上,我想在這裏做的是下面,就讓我們說我實例的部分(該部分的類是類我試圖創建)
所以如果我這樣做,我會得到我的內容和相關的中英翻譯,我甚至可以訪問兩個
$section = new Section('1','en');
echo $section->number_clicks;
echo $section->title;
的屬性,如果我修改其中的任何和調用save()方法
$section = new Section('1','en');
$section->number_clicks = $section->number_clicks+1;
$section->title = "new title";
$section->save();
這會調用每個的我2包含的類(內容和content_translations),使信息的保存()方法是在2個不同的錶店,現在如果我這樣做
$section = new Section('1','es');
$section->title = "titulo en español";
$section->save();
這隻會改變content_translations對象罪我實例化在「ES」版我的對象
的希望你能幫助我:)感謝提前
能否請你告訴你想什麼能夠與上面顯示的兩個類做的代碼? – Jay 2010-02-03 02:15:12
剛剛添加了一個例子:) – perrohunter 2010-02-03 02:25:53