2011-04-28 25 views
0

爲魚商提供軟件。 爲了銷售某種魚,用戶界面顯示了魚的圖片。用戶可以點擊它,然後彈出一個窗口,他可以選擇一個不同的魚。UI中的依賴和回調

在一個天真的實現,組件需要

  • 訪問FishImageLibrary,檢索圖像
  • 訪問FishSelectionPopup,要求用戶輸入一個新的魚類

解決方案1:一起傳遞兩個類。 問題是我們的組件可能在另一個組件內。所以這兩個類必須傳遞給我們的組件,從而在各處創建依賴關係。

解決方案2:回調。 使用回調的實現不會很乾淨,要麼是因爲組件可能位於另一個組件中,而且該事件必須在整個層次結構中傳播。這需要對幾個類進行更改。

對於一個真正乾淨的解決方案的任何建議?

回答

1

因此,這將是一種顯示任何魚被選中的圖片框,並在點擊時打開選擇彈出窗口。

我想那個盒子是一個更大的結構的一部分,其工作是呈現選定的魚。也許有一個魚的名字的標籤,另一個呈現的大小..我有他們的父母組件設置他們的價值觀時,選擇一條魚。它會知道FishImageLibrary並能夠檢索基於魚的圖像地址。

對於彈出式窗口,我認爲命令模式對於這類問題非常標準。它可以讓你傳遞一個標準化的對象到你的圖片框中,而不必知道OpenSelectionPopup的實現細節,它本身知道FishSelectionPopup以及如何打開它。

+0

由父組件分配圖像:好主意。但是,當我們想要在第二個地方使用這個圖片盒時不太好。命令模式打開Popup:是的,我會這樣做。 – LTR 2011-04-28 15:22:52

+0

「父組件」解決方案描述非常鬆散。這取決於你的應用程序如何工作和所有。但基本上你可以擁有儘可能多的圖片盒,只要他們有一些超級組件可以設置他們的pictureAddress。他們可以實現與其他組件共享的更通用的setter方法,或者如果要將它們配置爲像圖片方向之類的東西,而這些方法無法自行解決,那麼它們可以保持特定的方式。 – Jad 2011-04-28 15:43:41