디자인 모드 3- 빌더 모드

정의

  1. 모델 빌더는 동일한 프로세스의 구성이 서로 다른 표현을 만들 수 있습니다 그래서, 그의 표현을 분리하여 복잡한 객체를 구축 할 것입니다.
  2. 단지 건설의 유형을 지정해야 사용자 생성 및 세부 사항이 알아야 할 과정을을 만드는 데 필요한.
  3. 입력 : 만들기 유형

적용 현장

  1. 목적은 매우 복잡한 내부 구조가있는 경우 (여러 속성)
  2. 고립 된 복잡한 객체의 생성과 사용

이점

  1. 좋은 패키지를 만들고 별도의 사용
  2. 어느 정도 수준의 독립의 건설 사이 좋은 디커플링을 개발,

결점

  1. 빌더 원치 않는 객체를 생성
  2. 내부 제품 변경이 빌더는 수정해야

빌더 패턴 및 공장 패턴의 차이

  1. 모델 메소드 호출 순서에 더 초점을 빌더, 공장 모델은 더 많은 제품을 만들기에 초점을 맞추고
  2. 다른 공장 패턴의 객체를 생성하기위한 노력은 다양한 구성 요소에서 복잡한 제품을 만드는 공장 패턴에서 같은 제품을 만들 수 있습니다.
  3. 공장 모드는 제품의 구성 요소가 무엇인지 알고, 창조자 모드 요구를 작성해야합니다.
  4. 당신이 객체가 많은 단계를 필요로 만들 빌더 패턴에 적용, 단순히 공장 패턴이 될 수 있습니다 만들 수 있습니다.

Conding

건물 객체를 제공 플러그인 롬복 방법 @Builder 주석 빌더 패턴의 전형이다.

package com.example.design.creational.course.v2;

import lombok.Data;
import lombok.ToString;

/**
 * 建造者模式 静态内部类
 *
 * @author wang
 */
@Data
@ToString
public class Course {
    private String courseName;
    private String coursePpt;
    private String courseVideo;
    private String courseArticle;
    private String courseQa;

    public Course(CourseBuilder courseBuilder) {
        this.courseName = courseBuilder.courseName;
        this.courseArticle = courseBuilder.courseArticle;
        this.coursePpt = courseBuilder.coursePpt;
        this.courseQa = courseBuilder.courseQa;
        this.courseVideo = courseBuilder.courseVideo;
    }

    public static class CourseBuilder {
        private String courseName;
        private String coursePpt;
        private String courseVideo;
        private String courseArticle;
        private String courseQa;

        public CourseBuilder buildCourseName(String courseName) {
            this.courseName = courseName;
            return this;
        }

        public CourseBuilder buildCoursePpt(String coursePpt) {
            this.coursePpt = coursePpt;
            return this;
        }

        public CourseBuilder buildCourseVideo(String courseVideo) {
            this.courseVideo = courseVideo;
            return this;
        }

        public CourseBuilder buildCourseArticle(String courseArticle) {
            this.courseArticle = courseArticle;
            return this;
        }

        public CourseBuilder buildCourseQa(String courseQa) {
            this.courseQa = courseQa;
            return this;
        }

        public Course build() {
            return new Course(this);
        }
    }

}

그것은 사용하여 객체를 생성하는 빌더 방법으로 사용할 수 있습니다

package com.example.design.creational.course.v2;


/**
 * @author wang
 */
public class Test {
    public static void main(String[] args) {
        Course course = new Course.CourseBuilder().
                buildCourseArticle("article").
                buildCourseName("name").
                buildCoursePpt("ppt").
                buildCourseQa("qa").
                buildCourseVideo("video")
                .build();
        System.out.println(course);


    }
}

게시 28 개 원래 기사 · 원의 찬양 (13) · 전망 120 000 +

추천

출처blog.csdn.net/qq_26483671/article/details/103943207