2012-08-23 36 views
4

因此需要爲多步向導/單步向導創建通用界面。由於每個嚮導可能沒有全部按鈕(單步向導僅具有「取消」和「提交」,多步驟第一個屏幕具有「取消」,「下一步」等)。嚮導用戶界面的設計模式

我應該爲每個按鈕創建

interface CancelButton 
{ 
    void onCancelClick(); 
} 

interface NextButton 
{ 
    void onNextClick(); 
} 

等單獨的界面?每個嚮導只實現他們需要的那些?

這個用例有沒有更好的設計模式?

謝謝。

+0

也許[此](http://msdn.microsoft.com/en-us/library/fs0za4w6(v = vs.100).aspx)可以給你一些想法。 –

+0

你可以有一個Button接口暴露onClick方法。 NextButton,Cancel Button和SubmitButton實現onClick方法來定義按鈕特定的行爲。您可以擁有一個包含列表

+0

嚮導應該有一個名爲onClick的方法,它傳遞了被點擊的按鈕。此方法檢查列表中是否存在單擊的按鈕,並委託單擊的按鈕的onClick方法。 – CKing

回答

1

看來你只需要一個簡單的類層次結構。你會得到一些基本摘要WizardPage類和每個基本嚮導頁案例的子類,如WizardWelcomePage,WizardLastPage,WizardIntermediatePage。然後嚮導被定義爲嚮導頁面的集合,並且每個頁面都知道它應該顯示哪些按鈕。不是特別的設計模式,簡單的OOP。這種想法的

另外一個變化,使事情變得更加靈活。將製造基地WizardPage接受其構造WizardButton實例(和WizardCancelButtonWizardAcceptButtonWizardNextButton將是子類)的集合。這將允許您爲嚮導頁面和嚮導按鈕分別具有層次結構(變體)。我認爲這可以被視爲一種橋樑模式。每個按鈕子類都會在其構造函數中要求另一個接口,以便當它們被點擊時,它們可以將這些信息發送到WizardEngine,這將做出相應的操作:移到下一頁,取消或接受。您可能還需要從每個WizardPage開始另一連串事件,以指示內容何時變得有效或無效,以便WizardEngine可以啓用\禁用相應的按鈕。