业务背景:有一个套餐,里面有多个模快组成,现固定了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