您正在查找的單詞是正交性。設置是而不是正交,因爲它們不能獨立變化。
至於如何處理顯示這些屬性,完成通用的方式來做到這一點(和你的問題可能不保證這種泛型的編碼成本)將是給每個控件引用其他控件的表達式,其中如果完整表達式的計算結果爲true(或false),則控件在視圖中被禁用。
更容易編碼將暴露isDisabled()
方法的控制,您可以根據需要重寫。下面是一個簡短的Java示例,它利用Java匿名類來完成艱苦的工作。它假定已經有一個Control
級帶booleanValue()
吸氣劑,它轉換成一個布爾值,並且,由於AutoDisabledControl
是-控件,它可以作爲一個下拉更換了控制:
public class AutoDisabledControl extends Control {
public isDisabled() { return false ; }
}
..... usage ....
// control1 is never disabled
final Control1 = new AutoDisabledControl() ;
// Control2 is disabled if control1 is false
final Control2 = new AutoDisabledControl() {
public isDisabled() { return control1.booleanValue() == false; }
};
// conntrol 3 is enabled only if control1 and control2 are true
final Control1 = new AutoDisabledControl() {
public isDisabled() { return ! (
control1.booleanValue()
&& control2.booleanValue()) ;
};
自然在視圖的顯示中,它檢查每個控件的isDisabled()
,並禁用那些返回true的控件;當控件的值改變時,視圖重新顯示。我假設某種MVC模式。
這是什麼語言? – 2009-04-21 09:32:18
Flex-.NET-SQLServer – 2009-04-21 09:48:34