자바 디자인 모델 의 작성 자 모드 (Builder 모드)

7220 단어 알고리즘
자바 디자인 모델 의 작성 자 모드 (Builder 모드)
Builder 모드 는 복잡 한 대상 을 구축 하 는 데 사용 되 는 모드 입 니 다.복잡 한 대상 의 구축 과 그 표 시 를 분리 시 켜 같은 구축 과정 에서 서로 다른 표 시 를 만 들 수 있 도록 하 는 것 이다.
다 중 매개 변수 구조 함 수 를 Builder 모드 로 대체 하 는 것 은 비교적 좋 은 실천 법칙 이다.
장면
차 는 여러 가지 로 나 뉜 다.
자동차: 이름, 가격, 엔진, 천막 이 있 습 니 다.
전동 삼륜차: 이름, 가격, 천막 이 있 습 니 다.
자전거: 이름, 가격, 차 가 안 막 혀 요.
사실은 모든 차 에 구조 함 수 를 써 도 실현 할 수 있 지만 차 가 많 으 면 유지 하기 어렵다.창조 자 모델 은 바로 이런 문 제 를 해결 하 는 것 이다.
예 를 들다
다기 능 차 정의
/**
 * Created by yunzhao.liu on 2017/12/27
 */

public class Car {

    private String name;//  
    private int price;//  
    private boolean isTrafficjam;//  
    private boolean isHaveEngine;//   
    private boolean isHaveShed;//  

    public static class Builder {
        private String name;//  
        private int price;//  
        private boolean isTrafficjam;//  
        private boolean isHaveEngine;//   
        private boolean isHaveShed;//  

        //      
        public Builder() {
        }

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public Builder setPrice(int price) {
            this.price = price;
            return this;
        }

        public Builder setTrafficjam(boolean trafficjam) {
            isTrafficjam = trafficjam;
            return this;
        }

        public Builder setHaveEngine(boolean haveEngine) {
            isHaveEngine = haveEngine;
            return this;
        }

        public Builder setHaveShed(boolean haveShed) {
            isHaveShed = haveShed;
            return this;
        }

        public Car build() { //   ,       
            return new Car(this);
        }
    }

    private Car(Builder b) {
        name = b.name;
        price = b.price;
        isTrafficjam = b.isTrafficjam;
        isHaveEngine = b.isHaveEngine;
        isHaveShed = b.isHaveShed;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price=" + price +
                ", isTrafficjam=" + isTrafficjam +
                ", isHaveEngine=" + isHaveEngine +
                ", isHaveShed=" + isHaveShed +
                '}';
    }
}

테스트 클래스
/**
 * Created by yunzhao.liu on 2017/12/27
 *    
 */

public class TestBuilder {

    public static void main(String[] args) {
        //  A6
        Car aodi = new Car.Builder()
                .setName("  A6")
                .setPrice(200000)
                .setTrafficjam(true)
                .setHaveEngine(true)
                .setHaveShed(true)
                .build();
        String s1 = aodi.toString();
        System.out.println(s1);
        //   
        Car tricycle = new Car.Builder()
                .setName("   ")
                .setPrice(2500)
                .setHaveEngine(true)
                .setHaveShed(true)
                .build();
        String s2 = tricycle.toString();
        System.out.println(s2);

        //   
        Car bicycle = new Car.Builder()
                .setName("   ")
                .setPrice(300)
                .setTrafficjam(false)
                .build();

        String s3 = bicycle.toString();
        System.out.println(s3);
    }
}

좋은 웹페이지 즐겨찾기