简单建造者模式
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package top.fjy8018.designpattern.pattern.creational.builder;
|
||||
|
||||
/**
|
||||
* 建造者抽象类
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2018-09-25 17:15
|
||||
*/
|
||||
public abstract class AbstractCourseBuilder {
|
||||
public abstract void courseName(String courseName);
|
||||
|
||||
public abstract void coursePPT(String coursePPT);
|
||||
|
||||
public abstract void courseVideo(String courseVideo);
|
||||
|
||||
/**
|
||||
* question & answer
|
||||
*/
|
||||
public abstract void courseQA(String courseQA);
|
||||
|
||||
public abstract BCourse build();
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package top.fjy8018.designpattern.pattern.creational.builder;
|
||||
|
||||
/**
|
||||
* 实体类
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2018-09-25 17:13
|
||||
*/
|
||||
public class BCourse {
|
||||
private String courseName;
|
||||
private String coursePPT;
|
||||
private String courseVideo;
|
||||
/**
|
||||
* question & answer
|
||||
*/
|
||||
private String courseQA;
|
||||
|
||||
public String getCourseName() {
|
||||
return courseName;
|
||||
}
|
||||
|
||||
public void setCourseName(String courseName) {
|
||||
this.courseName = courseName;
|
||||
}
|
||||
|
||||
public String getCoursePPT() {
|
||||
return coursePPT;
|
||||
}
|
||||
|
||||
public void setCoursePPT(String coursePPT) {
|
||||
this.coursePPT = coursePPT;
|
||||
}
|
||||
|
||||
public String getCourseVideo() {
|
||||
return courseVideo;
|
||||
}
|
||||
|
||||
public void setCourseVideo(String courseVideo) {
|
||||
this.courseVideo = courseVideo;
|
||||
}
|
||||
|
||||
public String getCourseQA() {
|
||||
return courseQA;
|
||||
}
|
||||
|
||||
public void setCourseQA(String courseQA) {
|
||||
this.courseQA = courseQA;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "BCourse{" +
|
||||
"courseName='" + courseName + '\'' +
|
||||
", coursePPT='" + coursePPT + '\'' +
|
||||
", courseVideo='" + courseVideo + '\'' +
|
||||
", courseQA='" + courseQA + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package top.fjy8018.designpattern.pattern.creational.builder;
|
||||
|
||||
/**
|
||||
* 教练->建造课程
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2018-09-25 18:54
|
||||
*/
|
||||
public class Coach {
|
||||
|
||||
private AbstractCourseBuilder builder;
|
||||
|
||||
public Coach(AbstractCourseBuilder builder) {
|
||||
this.builder = builder;
|
||||
}
|
||||
|
||||
public BCourse createCourse(String courseName, String coursePPT, String courseVideo, String courseQA) {
|
||||
builder.courseName(courseName);
|
||||
builder.coursePPT(coursePPT);
|
||||
builder.courseVideo(courseVideo);
|
||||
builder.courseQA(courseQA);
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package top.fjy8018.designpattern.pattern.creational.builder;
|
||||
|
||||
/**
|
||||
* 建造者实现类
|
||||
*
|
||||
* @author F嘉阳
|
||||
* @date 2018-09-25 17:17
|
||||
*/
|
||||
public class CourseBuilder extends AbstractCourseBuilder {
|
||||
|
||||
private BCourse course = new BCourse();
|
||||
|
||||
@Override
|
||||
public void courseName(String courseName) {
|
||||
course.setCourseName(courseName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void coursePPT(String coursePPT) {
|
||||
course.setCoursePPT(coursePPT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void courseVideo(String courseVideo) {
|
||||
course.setCourseVideo(courseVideo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void courseQA(String courseQA) {
|
||||
course.setCourseQA(courseQA);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BCourse build() {
|
||||
return course;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package top.fjy8018.designpattern.pattern.creational.builder;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@Slf4j
|
||||
class CourseBuilderTest {
|
||||
|
||||
@Test
|
||||
void coachBuild() {
|
||||
Coach coach = new Coach(new CourseBuilder());
|
||||
BCourse course = coach.createCourse("Java课程", "课程PPT", "课程视频", "课程问答");
|
||||
log.info(course.toString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user