TS 생 성 형 디자인 모델 의 공장 방법 모델

2246 단어 디자인 모드
정의.
define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses. 대상 을 만 드 는 인 터 페 이 스 를 정의 하여 하위 클래스 가 어떤 종 류 를 예화 할 지 결정 합 니 다.공장 방법 은 한 종류의 실례 화 를 하위 클래스 로 지연 시 켰 다.
적용 (예)
제 가 지금 하고 있 는 BIM 프로젝트 는 벽 체 그리 기, 방 그리 기 로 나 뉘 어 있 습 니 다.BaseDraw 는 그림 의 공통점 을 정의 하고 사물 에 대한 추상 적 인 정 의 를 실현 합 니 다. DrawWall 과 DrawRoom 은 구체 적 인 작업 (제품 클래스 라 고 함) 을 실현 합 니 다. Creator 는 그림 클래스 를 만 드 는 방법 을 담당 합 니 다.
export abstract class BaseDraw {
    //    、  
    public startPoint:Point;
    public stopPoint:Point;
    //      
    public abstract draw():void;
}


export class DrawWall extends BaseDraw{
    public draw(){
        // draw a wall
    }
}

export class DrawRoom extends BaseDraw{
    public draw(){
        // draw a room
    }
}


export  class Creator{
    public readonly DrawType = {
        wall:DrawWall,
        room:DrawRoom
    };
    public  createDrawObj(c: string): BaseDraw|null {
        return this.createObj(this.DrawType[c])
    }

    private createObj(c: new () => T): T|null {
        let d = null;
        try{
            d = new c();
        }catch(e){
            //error
        }
        return d;
    }
}
}

사용 방법
 let creator:Creator = new Creator();
 let d = creator.createDrawObj(“wall”);//        
 d.draw(); //   

좋 은 점
우선, 양호 한 포장 성, 코드 구조 가 뚜렷 하 다.한 대상 과 관련 된 직책 은 보통 세 가지 가 있 습 니 다. * * 대상 자체 가 가지 고 있 는 직책, 대상 을 만 드 는 직책 과 사용 대상 의 직책 입 니 다. * *이렇게 쓰 면 직책 이 분명 하고 그 다음은 확장 하기 쉽다.예 를 들 어 나 는 지금 그리 기 자 를 새로 추가 하려 고 하 는데, 단지 하나의 종류 만 추가 하면 된다.또한 공장 방법 모델 은 전형 적 인 디 결합 구조 이다.벽 체 그리 기 클래스 를 바 꾸 려 면 공장 방법 을 수정 하기 만 하면 새 대상 을 만 드 는 파일 이 필요 하지 않 습 니 다.
쓸모
  • new 와 같은 대상 이 복잡 한 상황 에서 예 를 들 어 팝 업 상 자 를 만 들 고 서로 다른 팝 업 상 자 는 서로 다른 구조, 서로 다른 구성 요소 류 가 있 습 니 다. new 는 일어나 면 많은 파 라 메 터 를 전달 해 야 합 니 다. 이 럴 때 공장 방법 모드 를 사용 할 수 있 습 니 다.
  • 유연 하고 확장 가능 한 디자인 이 필요 합 니 다. 예 를 들 어 제품 류 가 고정 되 지 않 거나 교 체 될 수도 있 습 니 다. 공장 방법 만 수정 하면 됩 니 다. 여기저기 수정 하지 않 아 도 됩 니 다.
  • 병행 개발, 예 를 들 어 당신 은 클래스 B 가 필요 하지만 아직 다 쓰 지 않 았 으 니 먼저 공장 방법 으로 클래스 B 를 가상 할 수 있 습 니 다.

  • 참고 링크: TS 범 형 참고 서적: 《 디자인 모델 의 선 》

    좋은 웹페이지 즐겨찾기