자바 디자인 모델-건설 자 모델 상세 설명

예 를 들다
수요:집 을 짓 는 과정 은 지반 을 닦 고 벽 을 쌓 으 며 지붕 을 덮 는 것 을 포함한다.집 은 단층집 과 별장 을 포함 하여 프로 그래 밍 시 뮬 레이 션 이 이 루어 진다.
일반 해법
사고방식:집 종 류 를 정의 하고 집 을 짓 는 방법 을 포함 하 며 단독주택 과 별장 상속 집 종 류 를 정의 하고 관련 방법 을 다시 쓴다.
아 날로 그:
在这里插入图片描述
코드:
Abstract House(집)

public abstract class AbstractHouse {
    public abstract void buildBasic();//   
    public abstract void buildWalls();//  
    public abstract void buildRoof();//  
    public void build() { //  
       buildBasic();  //    (    )
       buildWalls();
       buildRoof();
    }
}
방 갈 로(단층집)

public class Bungalow extends AbstractHouse{
    @Override
    public void buildBasic() {
        System.out.println("     ");
    }
    @Override
    public void buildWalls() {
        System.out.println("    ");
    }
    @Override
    public void buildRoof() {
        System.out.println("    ");
    }
}
빌라(빌라)

public class Villa extends AbstractHouse{
    @Override
    public void buildBasic() {
        System.out.println("     ");
    }
    @Override
    public void buildWalls() {
        System.out.println("    ");
    }
    @Override
    public void buildRoof() {
        System.out.println("    ");
    }
}
클 라 이언 트 호출

public class Client {
    public static void main(String[] args) {
        Bungalow bungalow = new Bungalow();
        bungalow.build();
        Villa villa = new Villa();
        villa.build();
    }
}
실행 결과:
在这里插入图片描述
단점:
프로그램 이 확장 되 고 유지 되 지 않 아 제품 을 만 드 는 과정 과 함께 밀봉 하여 결합 성 이 높 습 니 다.
디 결합 제품 및 제품 생 성 과정=작성 자 모드
건설 자 모드
건설 자 모드(Builder Pattern)는 생 성기 모드 라 고도 부 르 며 대상 구축 모델 이다.이 는 복잡 한 대상 의 건설 과정(추상 적 유형)을 추상 화하 여 이 추상 적 과정의 서로 다른 실현 방법 으로 서로 다른 표현(속성)의 대상 을 구성 할 수 있다.
한 걸음 한 걸음 복잡 한 대상 을 만 들 고 사용자 가 복잡 한 대상 의 유형 과 내용 만 지정 하면 내부 의 구체 적 인 구축 세부 사항 을 알 필요 가 없 도록 합 니 다.
아 날로 그:
在这里插入图片描述
제품(제품):구체 적 인 제품 대상
  • Builder(추상 적 인 건축 자):제품 대상 의 각 부품 이 지정 한 인터페이스/추상 류 를 만 듭 니 다
  • ConcreteBuilder(구체 적 인 건축 자):인 터 페 이 스 를 실현 하고 각 부품 을 구축 하고 조립 합 니 다
  • 4.567917.Director(지휘자):Builder 인 터 페 이 스 를 사용 하 는 대상 을 구축 하고 제품 대상 의 생산 과정 을 통제 하 며 고객 과 대상 의 생산 과정 을 격 리 시 켰 다건설 자 모드 해법
    코드:
    하우스 클래스(제품)
    
    public class House {
        private String baise;
        private String wall;
        private String roof;
    }
    
    HouseBuilder 클래스(Builder 추상 건축 자)
    
    public abstract class HouseBuilder {
        protected House house = new House();
        //        ,      
        public abstract void buildBasic();
        public abstract void buildWalls();
        public abstract void buildRoof();
        //     ,    (  )   
        public House buildHouse() {
            return house;
        }
    }
    
    3.Bungalow 류(ConcreteBuilder 구체 적 인 건축 자 A)
    
    public class Bungalow extends HouseBuilder {
        @Override
        public void buildBasic() {
            System.out.println("     ");
        }
        @Override
        public void buildWalls() {
            System.out.println("    ");
        }
        @Override
        public void buildRoof() {
            System.out.println("    ");
        }
    }
    
    4.Villa 류(ConcreteBuilder 구체 적 인 건축 자 B)
    
    public class Villa extends HouseBuilder {
        @Override
        public void buildBasic() {
            System.out.println("     ");
        }
        @Override
        public void buildWalls() {
            System.out.println("    ");
        }
        @Override
        public void buildRoof() {
            System.out.println("    ");
        }
    }
    
    5.HouseDirector 류(Director 지휘자)
    
    public class HouseDirector {
        HouseBuilder houseBuilder = null;
        //      houseBuilder
        public HouseDirector(HouseBuilder houseBuilder) {
            this.houseBuilder = houseBuilder;
        }
        //  setter    houseBuilder
        public void setHouseBuilder(HouseBuilder houseBuilder) {
            this.houseBuilder = houseBuilder;
        }
        //           ,     
        public House constructHouse() {
            houseBuilder.buildBasic();
            houseBuilder.buildWalls();
            houseBuilder.buildRoof();
            return houseBuilder.buildHouse();
        }
    }
    
    클 라 이언 트 호출
    
    public class Client {
        public static void main(String[] args) {
            //   
            Bungalow commonHouse = new Bungalow();
            //          
            HouseDirector houseDirector = new HouseDirector(commonHouse);
            //     ,    (    )
            House house = houseDirector.constructHouse();
            System.out.println("--------------------------");
            //   
            Villa highBuilding = new Villa();
            //     
            houseDirector.setHouseBuilder(highBuilding);
            //     ,    (  )
            houseDirector.constructHouse();
        }
    }
    
    실행 결과:
    在这里插入图片描述
    총결산
    4.567917.클 라 이언 트 는 제품 내부 로 구 성 된 디 테 일 을 알 필요 가 없고 제품 자체 와 제품 의 생 성 과정 을 결합 시 켜 같은 생 성 과정 에서 서로 다른 제품 대상 을 만 들 수 있 습 니 다4.567917.복잡 한 제품 의 생 성 절 차 를 서로 다른 방법 으로 분해 하여 생 성 과정 을 더욱 뚜렷 하 게 한다4.567917.서로 다른 구체 적 인 건설 자 를 사용 하면 서로 다른 제품 대상 을 얻 을 수 있다4.567917.새로운 구체 적 인 건설 자 를 추가 할 때 기 존 코드 를 수정 할 필요 가 없다4.567917.제품 간 의 차이 가 크 면 건축 자 모델 을 사용 하기에 적합 하지 않다추상 공장 모델 VS 건설 자 모델추상 적 인 공장 모델 은 제품 가족 에 대한 설립 이 고 한 제품 가족 은 일련의 제품 이다.서로 다른 분류 차원 을 가 진 제품 조합 으로 추상 적 인 공장 모델 을 사용 하면 구축 과정 에 관심 을 가지 지 않 고 어떤 제품 이 어떤 공장 에서 생산 되 는 지 에 만 관심 을 가지 면 된다.
    한편,건축 자 모델 은 지 정 된 청사진 에 따라 제품 을 만들어 야 하 는데 그 주요 목적 은 부품 을 조립 하여 신제품 을 만 드 는 것 이다.
    이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!

    좋은 웹페이지 즐겨찾기