2011-05-07 85 views
0

考慮有公司列表,我們可以添加新公司或編輯現有公司。使用表單執行添加和編輯。添加/編輯表單設計模式

爲了呈現這些表單,我需要兩個類:AddForm和EditForm。 但是他們有很多共同點(域,按鈕等),所以我概括Form類:

class AddForm extends Form 
class EditForm extends Form 

然後我需要創建很多形式:對公司,聯繫人,文檔,用戶等上。所以,我創建一個帶有三個基本類別:

abstract class BaseForm 
abstract class BaseAddForm extends BaseForm 
abstract class BaseEditForm extends BaseForm 

現在我要爲公司創造的實現:

class CompanyForm extends BaseForm 
class CompanyAddForm extends BaseAddForm, CompanyForm 

OOPS!多重繼承是不允許的。

我該怎麼辦?

更新:我聽說需要多重繼承意味着糟糕的設計。任何人都可以告訴我這種設計可以重新設計嗎?

回答

0

聽起來像組成是你想使用的。一個Form有一個FormPanel的列表。

0

首先,我將這些功能合併爲一個單一的形式,正如Kaj所建議的那樣。這是管理公司對象列表的功能。對於典型的用戶管理來說,這是一個合理的粒度,即從一個表單添加或編輯公司。

其次就多重繼承問題而言,你說你需要兩種形式,添加,編輯。好吧,我不同意,但我們還是一起去吧。

你說「但他們有很多共同點(字段,按鈕等),所以我推廣了Form類」。我質疑這裏泛化的基礎。很多領域和按鈕的共同點?例如,DocumentEdit和CompanyEdit表單有什麼共同之處?編輯按鈕,還有什麼?

現在,CompanyAdd和CompanyEdit是的,他們會有很多共同點。這表明添加和編輯表單擴展了一些父級特定的表單,而不是這些抽象的添加/編輯基礎。只需擺脫BaseFormAdd和BaseFormEdit。示例,文檔表單和公司表單之間真正具有多少通用功能?看起來像一個常見的基礎添加或編輯表單增加了很少的使用。你可以做到沒有繼承線。在多重繼承方面,我只遇到了一種有用的情況,我覺得我真的很需要它。

+0

請將您的答案重新格式化,以便閱讀。 – MByD 2011-05-08 11:19:40

+0

公司形式和文件形式有很多共同之處 - 窗口,表單面板,保存和取消按鈕等。 – 2011-05-13 15:34:35

相關問題