diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/AbstractCourseBuilder.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/AbstractCourseBuilder.java new file mode 100644 index 0000000..69849e6 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/AbstractCourseBuilder.java @@ -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(); +} diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/BCourse.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/BCourse.java new file mode 100644 index 0000000..bb30804 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/BCourse.java @@ -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 + '\'' + + '}'; + } +} diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/Coach.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/Coach.java new file mode 100644 index 0000000..6ef5496 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/Coach.java @@ -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(); + } +} diff --git a/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilder.java b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilder.java new file mode 100644 index 0000000..59fc807 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilder.java @@ -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; + } +} diff --git a/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java b/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java new file mode 100644 index 0000000..6c9de39 --- /dev/null +++ b/src/test/java/top/fjy8018/designpattern/pattern/creational/builder/CourseBuilderTest.java @@ -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()); + } +} \ No newline at end of file