spring增强策略模式-改造后-需求变更扩展
This commit is contained in:
5
.idea/jarRepositories.xml
generated
5
.idea/jarRepositories.xml
generated
@@ -6,6 +6,11 @@
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package top.fjy8018.designpattern.pattern.behavior.templatemethod.spring.after;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import top.fjy8018.designpattern.pattern.behavior.templatemethod.spring.bean.ComponentTypeEnum;
|
||||
import top.fjy8018.designpattern.pattern.behavior.templatemethod.spring.bean.FormItemConfig;
|
||||
import top.fjy8018.designpattern.pattern.behavior.templatemethod.spring.bean.FormItemRule;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 此时要加入一种新的表单项 —— 数字选择器(NUMBER_PICKER),
|
||||
* 它有着特殊的约束条件:最小值和最大值,输入到 FormItemConfig 时分别为 minNumer 和 maxNumber
|
||||
* <p>
|
||||
* 只需要添加对应的枚举和实现对应的 FormItemConverter,并不需要修改任何逻辑代码,
|
||||
* 因为 Spring 启动时会自动帮我们处理好 NUMBER_PICKER 和 NumberPickerConverter 的关联关系 —— 完美符合 “开闭原则”
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2022/1/26 10:13
|
||||
*/
|
||||
@Component
|
||||
public class NumberPickerConverter extends AbstractFormItemConverter {
|
||||
|
||||
/**
|
||||
* 子类可处理的表单项类型
|
||||
*/
|
||||
@Override
|
||||
public ComponentTypeEnum getType() {
|
||||
return ComponentTypeEnum.NUMBER_PICKER;
|
||||
}
|
||||
|
||||
/**
|
||||
* 约束规则创建完成之后,子类如果需要特殊处理,可覆写该方法
|
||||
*
|
||||
* @param rules
|
||||
* @param config
|
||||
*/
|
||||
@Override
|
||||
protected void afterRulesCreate(List<FormItemRule> rules, FormItemConfig config) {
|
||||
Integer minNumber = config.getMinNumber();
|
||||
// 处理最小值
|
||||
if (minNumber != null) {
|
||||
FormItemRule minNumRule = new FormItemRule();
|
||||
|
||||
minNumRule.setMinimum(minNumber);
|
||||
minNumRule.setMessage("输入数字不能小于 " + minNumber);
|
||||
|
||||
rules.add(minNumRule);
|
||||
}
|
||||
|
||||
Integer maxNumber = config.getMaxNumber();
|
||||
// 处理最大值
|
||||
if (maxNumber != null) {
|
||||
FormItemRule maxNumRule = new FormItemRule();
|
||||
|
||||
maxNumRule.setMaximum(maxNumber);
|
||||
maxNumRule.setMessage("输入数字不能大于 " + maxNumber);
|
||||
|
||||
rules.add(maxNumRule);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,5 +15,6 @@ public enum ComponentTypeEnum {
|
||||
DROPDOWN_SELECT,
|
||||
FUZZY_SEARCH,
|
||||
TEXT_INPUT,
|
||||
TEXT_AREA;
|
||||
TEXT_AREA,
|
||||
NUMBER_PICKER;
|
||||
}
|
||||
|
||||
@@ -30,4 +30,8 @@ public class FormItemConfig {
|
||||
private Integer maxLength;
|
||||
|
||||
private String placeholder;
|
||||
|
||||
private Integer minNumber;
|
||||
|
||||
private Integer maxNumber;
|
||||
}
|
||||
|
||||
@@ -18,4 +18,8 @@ public class FormItemRule {
|
||||
private Integer min;
|
||||
|
||||
private Integer max;
|
||||
|
||||
private Integer minimum;
|
||||
|
||||
private Integer maximum;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user