자바 디자인 모델-건설 자 모델 상세 설명
수요:집 을 짓 는 과정 은 지반 을 닦 고 벽 을 쌓 으 며 지붕 을 덮 는 것 을 포함한다.집 은 단층집 과 별장 을 포함 하여 프로 그래 밍 시 뮬 레이 션 이 이 루어 진다.
일반 해법
사고방식:집 종 류 를 정의 하고 집 을 짓 는 방법 을 포함 하 며 단독주택 과 별장 상속 집 종 류 를 정의 하고 관련 방법 을 다시 쓴다.
아 날로 그:
코드:
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)는 생 성기 모드 라 고도 부 르 며 대상 구축 모델 이다.이 는 복잡 한 대상 의 건설 과정(추상 적 유형)을 추상 화하 여 이 추상 적 과정의 서로 다른 실현 방법 으로 서로 다른 표현(속성)의 대상 을 구성 할 수 있다.
한 걸음 한 걸음 복잡 한 대상 을 만 들 고 사용자 가 복잡 한 대상 의 유형 과 내용 만 지정 하면 내부 의 구체 적 인 구축 세부 사항 을 알 필요 가 없 도록 합 니 다.
아 날로 그:
제품(제품):구체 적 인 제품 대상
코드:
하우스 클래스(제품)
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 건설 자 모델추상 적 인 공장 모델 은 제품 가족 에 대한 설립 이 고 한 제품 가족 은 일련의 제품 이다.서로 다른 분류 차원 을 가 진 제품 조합 으로 추상 적 인 공장 모델 을 사용 하면 구축 과정 에 관심 을 가지 지 않 고 어떤 제품 이 어떤 공장 에서 생산 되 는 지 에 만 관심 을 가지 면 된다.
한편,건축 자 모델 은 지 정 된 청사진 에 따라 제품 을 만들어 야 하 는데 그 주요 목적 은 부품 을 조립 하여 신제품 을 만 드 는 것 이다.
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.