2013-07-03 13 views
0

通常,我將對象分成加載數據的「視圖」和從視圖繼承的「編輯器」,並可以編輯數據庫中的數據。 我的問題是,我有一個繼承結構是這樣的:將對象分解爲其「視圖」和「編輯器」

parentView 
childView1 extends parentView 
childView2 extends parentView 

parentEditor extends parentView 
childEditor1 extends parentEditor // PROBLEM HERE 
childEditor2 extends parentEditor // PROBLEM HERE 

顯然,childEditors的繼承是不是最好的,因爲我需要從childViews複製代碼。

有沒有更好的解決方案? 我相信網絡上的這個主題有很多,但我錯過了找到它們的正確的「關鍵字」。

PS:使用PHP進行開發

+0

您計劃在哪個版本的PHP上運行應用程序?如果你使用的是php 5.4+,那麼trairs可以幫助你(它們基本上是一個編譯器輔助的複製和粘貼) – complex857

+0

我已經閱讀了有關特徵。這是一個「乾淨的」解決方案嗎?不幸的是,當前使用的PHP版本是5.3.2 :( – schlimpf

+0

不,不是的,編寫正確的OOP代碼應該可以避免這樣做的需要 – OptimusCrime

回答

1

這看起來像是擴展類的不好的方法,層次結構沒有任何意義。

你說你把代碼分成視圖和編輯器。這是okey,但應該意味着在編輯器中不使用視圖代碼,反之亦然,在構建像這樣的模式時。

我看到它的方式,會讓每個視圖都有一個抽象類更加合理。然後讓編輯再次擴展視圖。然後編輯器以更合理的OOP方式連接到視圖。

+0

這可能是有道理的,但它如何幫助我解決上述問題?如果childEditor擴展了childViews,我需要將代碼複製到childEditor1和childEditor2中 – schlimpf

+0

@schlimpf - 不同的編輯器不應該每個編輯器都可以擴展一個視圖,只有該編輯器可以更改/編輯數據庫中的數據,編輯器需要什麼來訪問數據和方法來自另一位編輯? – OptimusCrime

+0

對不起,因爲編輯不需要訪問彼此的數據,我的意思是說, t childEditor1和childEditor2的代碼幾乎相同,這就是爲什麼我試圖從父編輯器繼承 – schlimpf

相關問題