可能有一个经验法则,哪个类应该负责表单验证?
一个简短的例子:
我有2个类PreferencesUI.java和NormalDistributionPreferences.java
NormalDistributionPreferences.java将所有方法设为静态,并允许我的应用程序的不同部分设置并从Preferences API / register中获取值。
示例:
public static void setAccuracyAuto(boolean auto){
preferences.putBoolean("AccuracyAuto", auto);
}
并在PreferencesUI.java中,在用户填写表单并按下保存后执行:
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(trapeziumRuleRadioButton.isSelected()){
NormalDistributionPreferences.setIntegrationType("TrapeziumRule");
}else if(midPointRuleRadioButton.isSelected()){
NormalDistributionPreferences.setIntegrationType("MidPointRule");
}else{
NormalDistributionPreferences.setIntegrationType("SimpsonsRule");
}
NormalDistributionPreferences.setAccuracyAuto(accuracyCheckBox.isSelected());
NormalDistributionPreferences.setAccuracy(0);
dispose();
}
我的问题是,如果用户选择了我不希望他们选择的东西,那么在偏好器类中的setter会抛出异常,然后在saveButtonActionPerformed中尝试并捕获 - 会显示错误吗?精度整数应始终为正数,对于某些集成类型,即使在保存数据或normalDistributionPreferences时也应在preferencesUI中强制执行该规则。
答案 0 :(得分:0)
在我看来,每个实体都必须保持其完整性,因此如果首选项具有有限的法律价值限制,您必须在setter方法或AOP中保证这种完整性。如果某些客户端类试图违反这些策略,那么它们会捕获一些适当的异常,并且处理这些异常情况是这些客户端类的义务传递此非法值。