我有多個從基類繼承的對象,並試圖決定用戶應該如何編輯它們。有許多常用字段和一些只適用於每個子類的字段。有沒有解決這個問題的設計模式?是否有解決如何管理多個類似對象的設計模式?
我想我可以爲每一個網頁,或者我可以有一個網頁,並顯示/隱藏子類的字段。我可以考慮每個人的利弊。很高興知道是否有標準的處理方法。
我有多個從基類繼承的對象,並試圖決定用戶應該如何編輯它們。有許多常用字段和一些只適用於每個子類的字段。有沒有解決這個問題的設計模式?是否有解決如何管理多個類似對象的設計模式?
我想我可以爲每一個網頁,或者我可以有一個網頁,並顯示/隱藏子類的字段。我可以考慮每個人的利弊。很高興知道是否有標準的處理方法。
您可以使用並行類層次結構(本身不是設計模式)。使用這個想法,你需要創建一個基類代碼隱藏類來迎合你的基類的屬性,然後創建從此派生的類來支持必要的UI來處理派生類的其他屬性。
並行類庫可能導致問題,例如如果你創建一個新的派生類,那麼你還必須創建一個新的派生UI類等,但是如果派生的UI類很簡單,那麼這可能不會成爲太多的問題。
編輯:
如果這是你走的路線,你想創建用戶控件,而不是頁面的層次,然後適當的用戶控制在運行時添加到您的網頁。
我對動態標籤有很好的運氣。這個想法是,所有的常用字段都放在Main選項卡上。任何依賴於特定類別的東西都會出現在名稱相似的標籤上。
在運行時我決定它是什麼對象並顯示相應的選項卡。
類層次結構的相反方法是成分學派。對這個問題的組合方法可以讓你爲你的類的基礎數據創建一個基本的顯示控件(這通常在一個組合方案中保存在一個核心對象中)和一個專門控制專門數據的控件它自己單獨的對象)。
這有一些優點和一些缺點。最重要的優點是您擁有無限可擴展的系統,可以在類樹上向上顯示常用數據集類型,並且您可以獲得正常的構圖風格優勢 - 更改類的定義往往會分解爲較小的編輯,更獨立的單位。最重要的缺點可能是你最終不得不把工作分解成許多子單元,而不是讓一個單一的「優雅」(對於類樹來說,優雅往往是一種幻覺),對於類和其視覺表示/序列化。
檢查Flyweight模式。