业务背景:有一个套餐,里面有多个模快组成,现固定了4种套餐,套餐中的模快有重复,例如
模快:A,B,C,D
套餐:甲:A
乙:A,B
丙:A,C
丁:A,B,C,D
现要求,使用者可以根据自己的需求制定专属套餐,而不是局限于在上述四个套餐中进行选择,这样,就需要我们做到套餐中模快的可插拔设计,动态的组合。
看一下具体的uml设计图

对每个模快,我们都要有一个module实体,一个strategy
首先是module实体:
@Entity
@Table(name = "module_education")
public class EducationModule extends BaseModule {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
/**
* 姓名
*/
@Column(name = "name")
private String name;
/**
* 毕业结论
*/
@Column(name = "study_result")
private String studyResult;
/**
* 毕业时间
*/
@Column(name = "graduate_time")
private String graduateTime;
/**
* 学校
*/
@Column(name = "college")
private String college;
/**
* 学历
*/
@Column(name = "degree")
private String degree;
/**
* 院校类型
*/
@Column(name = "college_type")
private String collegeType;
public EducationModule() {
}
public EducationModule(Color color) {
super(color);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStudyResult() {
return studyResult;
}
public void setStudyResult(String studyResult) {
this.studyResult = studyResult;
}
public String getGraduateTime() {
return graduateTime;
}
public void setGraduateTime(String graduateTime) {
this.graduateTime = graduateTime;
}
public String getCollege() {
r

本文介绍了如何使用策略模式实现模块的可插拔设计,以满足用户自定义套餐的需求。通过模块实体(Module)和策略类,实现了动态组合功能。每个模块包含数据抓取和分析的方法,并通过ModuleCallable类实现Callable接口,允许存在备用策略以应对不同情况。
&spm=1001.2101.3001.5002&articleId=79932673&d=1&t=3&u=99768f8fd1cc4721b0b135c7384c2c96)
443

被折叠的 条评论
为什么被折叠?



