2010-08-03 49 views
4

我有一個頁面,當訪問顯示的相關視頻信息的表:PHP窗體的狀態設計模式是否過分矯枉過正?

  • 嵌入代碼
  • 標題
  • 說明
  • 當前畫廊
  • 縮略圖

首次訪問頁面時,此信息爲只讀。

有一個具有以下選項的選擇菜單:

  • 編輯說明
  • 創建縮略圖(上傳/替換)
  • 編輯嵌入代碼
  • 變化畫廊
  • 刪除視頻

當用戶選擇一個選項,會顯示相同的初始數據表格,但必要時會顯示相關的表格輸入。

例如,如果選擇「編輯描述」,頁面將重新加載並且描述文本將被替換爲文本輸入。如果選擇「創建縮略圖」,則會顯示文件上傳輸入。

這個想法是一起顯示所有信息,但限制一次可以編輯多少。

我知道的狀態模式是一種可能的解決方案,因爲每個數據可以在兩個ATLEAST狀態之一:

  1. 顯示狀態
  2. 表單輸入狀態

但我的問題是,會使用狀態模式是否過分?

目前,每次訪問頁面時,表單的每個部分都用switch語句決定它應該處於「顯示」狀態還是「輸入」狀態,然後相應地執行操作。我懷疑實施國家模式設計是否會改變形式,並在路上更容易地創建類似的形式。

謝謝!

+2

更好的是:當用戶單擊鏈接時,爲什麼不使用javascript生成表單?然後他不必重新加載頁面。 – Artefacto 2010-08-03 03:23:24

+0

那麼,我還沒有踏入Ajax,並試圖保持簡單。 – 2010-08-03 03:25:20

+1

那麼,我不是在建議ajax(儘管這是一個好主意)。表格仍然可以以正常方式提交;它只是一個動態創建表單的問題(或者只是將其包含在HTML中,並將顯示從none更改爲block)。 – Artefacto 2010-08-03 03:32:57

回答

4

不,國家設計模式沒有矯枉過正。這可能是處理這種複雜接口的算法的一個非常好的選擇。我在PHP中多次使用狀態引擎;它可以幫助您創造性地思考問題,並且您通常會獲得靈活性的獎勵。

我希望更多程序員知道這樣的事情。

+1

@staticscan - 謝謝你,這是令人鼓舞的! – 2010-08-03 18:15:33

0

我使用的設計模式越多,包括PHP中的狀態模式,我越相信他們可以節省時間。最初,開發可能需要更長的時間,但不會更長。但是,當涉及到更改和更新時,它們會節省大量時間。您的代碼組織性更好,更清晰,不太可能通過將代碼中的炸彈帶入設計模式之外的緊密綁定中。我已經在php5dp.com上完成了幾個PHP設計模式,但是在國家dp中沒有任何設計模式。