简单建造者模式
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