안드로이드 디자인 모델의 건설자 모델, 당신은 정말 이해합니까?

2647 단어
개념은 복잡한 대상의 구축과 그 표시를 분리하여 같은 구축 과정에 서로 다른 표시를 구축할 수 있게 한다. 사용자에게 건설 과정과 세부 사항, 예를 들어 컴퓨터를 구축하는 데 관심을 두지 않을 수 있다. 우리는 cpu 메인보드, 하드디스크 등을 선택한 다음에 조립을 시작해야 한다. 우리에게 필요한 것은 컴퓨터이다. 어떻게 조립하는지에 대해 우리는 개의치 않는다.
건설자 모델은 주로 몇 가지 역할 제품 클래스가 있다. 이것은 창설하고자 하는 복잡한 대상을 나타낸다. 이것은 구체적인 클래스builder 추상적인 건설자이다. 제품의 추상적인 인터페이스를 창설하고 일반적으로 적어도 하나의 제품을 창설하는 추상적인 방법과 제품으로 돌아가는 추상적인 방법인 ConcrateBuilder 실제 건설자:builder류를 실현하고 추상적인 모든 방법을 실현하며 구체적인 건설 세부 사항을 실현한다.DIrector 지휘자: 서로 다른 건설자를 분배하여 제품을 만들고 조립 절차를 통일시킨다.실현 1. 먼저 구체적인 제품 클래스 컴퓨터 만들기
public class Computer {

    private String cpu;//cpu
    private String disk;// 
    private String board;// 

    public String getCpu() {
        return cpu;
    }

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public String getDisk() {
        return disk;
    }

    public void setDisk(String disk) {
        this.disk = disk;
    }

    public String getBoard() {
        return board;
    }

    public void setBoard(String board) {
        this.board = board;
    }
}

2. 추상적인 건설자가 조립하는 모든 과정을 정의한다.
public abstract class Builder {

    public abstract void buildCPU(String cpu);// CPu

    public abstract void buildDisk(String disk);// 

    public abstract void buildBoard(String board);// 

    public abstract Computer create();// 
}

3. 실제 건설자를 만들고 구체적인 조립 과정을 실현한다.
public class ConcreateBuilder extends Builder {
    Computer computer = new Computer();// 
    @Override
    public void buildCPU(String cpu) {
        computer.setCpu(cpu);
    }

    @Override
    public void buildDisk(String disk) {
        computer.setDisk(disk);
    }

    @Override
    public void buildBoard(String board) {
        computer.setBoard(board);
    }

    @Override
    public Computer create() {
        return computer;
    }
}

4. 지휘자 클래스 정의
public class Director {

    private ConcreateBuilder mBuilder = null;

    public Director(ConcreateBuilder builder){
        this.mBuilder = builder;
    }

    public  Computer build(String cpu,String disk,String board){
        if(mBuilder!=null){
            mBuilder.buildBoard(board);
            mBuilder.buildCPU(cpu);
            mBuilder.buildDisk(disk);
            mBuilder.create();
        }
        return null;
    }

}

5 테스트 방법, 실현 결과 보기
@Test
public void testBuilder(){
    ConcreateBuilder builder = new ConcreateBuilder();
    Director director = new Director(builder);
    Computer computer = director.build("Intel"," "," ");
    System.out.println(computer);
}

좋은 웹페이지 즐겨찾기