spring增强策略模式-改造后-需求变更扩展

This commit is contained in:
fujiayang
2022-01-26 10:16:15 +08:00
parent f226ad20d1
commit 89404411f1
5 changed files with 76 additions and 1 deletions

View File

@@ -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" />

View File

@@ -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);
}
}
}

View File

@@ -15,5 +15,6 @@ public enum ComponentTypeEnum {
DROPDOWN_SELECT,
FUZZY_SEARCH,
TEXT_INPUT,
TEXT_AREA;
TEXT_AREA,
NUMBER_PICKER;
}

View File

@@ -30,4 +30,8 @@ public class FormItemConfig {
private Integer maxLength;
private String placeholder;
private Integer minNumber;
private Integer maxNumber;
}

View File

@@ -18,4 +18,8 @@ public class FormItemRule {
private Integer min;
private Integer max;
private Integer minimum;
private Integer maximum;
}