대상의build 모드 만들기

1798 단어
 :  , field , field , ?

1. 중첩구조기


반드시field의 구조기로 파라미터를 제공한 다음에 선택할 수 있는 파라미터가 점차적으로 증가하는 구조기를 제공합니다
 :  , 

2. 자바빈스 모드


파라미터가 있는 구조기를 제공하지 않습니다.field에 대해서setter () 설정만 합니다.
 :  , setter() field , 

3. Build 모드


예:
public class Blog {
    private final String title;
    private final String abstract;
    private final String content;
    private final String optional1;
    private final String optional2;

    private Blog (Build build) {
        title = build.title;
        abstract = build.abstract;
        content = build.content;
        optional1 = build.optional1;
        optional2 = build.optional2;
    }

    public static class Builder {
        private final String title;
        private final String abstract;
        private final String content;
        private final String optional1;
        private final String optional2;
        
        public Builder(String title, String abstract, String content) {
            this.title = title;
            this.abstract = abstract;
            this.content = content;
        }

        public Builder optional1 (String optional1) {
            this.optional1 = optional1;
        }
        public Builder optional2 (String optional2) {
            this.optional2 = optional2;
        }
        public Blog build() {
                return new Blog(this);
        }
    }
}


class Client {
        public static void main (String[] args) {
                Blog blog = newBlog.Builder("title", "abstract", "content").optional1("optional1").optional2("optional2").build();
        }
}

장점: 뚜렷하고 이해하기 쉬우며 대상을 구성한 후 상태가 변할 수 없고 통제하기 쉽다.

좋은 웹페이지 즐겨찾기