您正在查找的单词是正交性。设置是而不是正交,因为它们不能独立变化。
至于如何处理显示这些属性,完成通用的方式来做到这一点(和你的问题可能不保证这种泛型的编码成本)将是给每个控件引用其他控件的表达式,其中如果完整表达式的计算结果为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