매일 하나의 디자인 모델 (4) - 건설 자 모델
17362 단어 디자인 모드
소프트웨어 개발 에서 이러한 상황 을 만 날 수 있다. 한 가지 내부 데이터 가 너무 복잡 하고 많은 구성원 속성 을 가진다. 이런 구성원 속성 중 에는 인용 유형의 구성원 대상 이 있다.이러한 인 스 턴 스 를 만 들 때 일부 속성의 할당 은 특정한 순서 로 해 야 합 니 다. 하나의 속성 이 할당 되 지 않 기 전에 다른 속성 은 할당 할 수 없 을 수도 있 습 니 다.우리 가 이런 상황 을 만 났 을 때 정말 고통 이 었 다. 우 리 는 그것 만 을 사용 하고 싶 었 지만, 우 리 는 그것 의 내부 구조 와 어떻게 조립 하 는 지 알 아 보 는 데 시간 을 들 여야 했다.이때 건설 자 모델 은 우리 가 고통 을 줄 이 는 데 도움 을 줄 수 있다.
가설 장면: 조립 시스템 은 사용자 가 부품 을 합 격 된 데스크 톱 으로 조립 하 는 데 도움 을 줄 수 있다. 이 는 구체 적 인 조립 과정 을 건설 자 라 는 대상 에 밀봉 하고 건설 자 는 사용자 에 게 이미 조립 한 완전한 제품 대상 에 게 돌려 주 며 사용 자 는 이 대상 이 포함 하 는 속성 과 그들의 생 성 방식 에 관심 을 가지 지 않 고 직접 사용 할 수 있다.
추상 적 인 공장 모델 을 자동차 부품 생산 공장 으로 보고 한 제품 족의 제품 을 생산 한다 면 건설 자 모델 은 바로 자동차 조립 공장 으로 부품 에 대한 조립 을 통 해 완전한 자동 차 를 되 돌 릴 수 있다.
패턴 구조
장단 점
장점.
결점.
실제 응용
https://github.com/zero4eva/design_pattern
public class ComputerTest {
public static void main(String[] args) {
ComputerBuilder builder = new HighComputerBuilder();
ComputerDirector director = new ComputerDirector();
director.setBuilder(builder);
Computer computer = director.Construct();
System.out.println(computer.toString());
}
}
public class Computer {
private String mainBoard;
private String CPU;
private String hardDisk;
private String GPU;
private String RAM;
private String display;
private String chassis;
// setter getter toString
...
}
public abstract class ComputerBuilder {
protected Computer computer;
public ComputerBuilder() {
this.computer = new Computer();
}
public abstract void buildMainBoard();
public abstract void buildCPU();
public abstract void buildHardDisk();
public abstract void buildGPU();
public abstract void buildRAM();
public abstract void buildDisplay();
public abstract void buildChassis();
public Computer getComputer() {
return this.computer;
}
}
public class ComputerDirector {
private ComputerBuilder builder;
public ComputerDirector(ComputerBuilder builder) {
this.builder = builder;
}
public Computer Construct() {
builder.buildMainBoard();
builder.buildCPU();
builder.buildHardDisk();
builder.buildGPU();
builder.buildRAM();
builder.buildDisplay();
builder.buildChassis();
return builder.getComputer();
}
}
public class HighComputerBuilder extends ComputerBuilder {
@Override
public void buildMainBoard() {
super.computer.setMainBoard("m-ATX");
}
@Override
public void buildCPU() {
super.computer.setCPU("Core i9-9900K");
}
@Override
public void buildHardDisk() {
super.computer.setHardDisk("512G SSD + 2TB HDD");
}
@Override
public void buildGPU() {
super.computer.setGPU("RTX 2080 Ti 11G");
}
@Override
public void buildRAM() {
super.computer.setRAM("DDR4 32G");
}
@Override
public void buildDisplay() {
super.computer.setDisplay("ASUS PG27 4K/144HZ");
}
@Override
public void buildChassis() {
super.computer.setChassis(" -244");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.