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(); //
좋 은 점
우선, 양호 한 포장 성, 코드 구조 가 뚜렷 하 다.한 대상 과 관련 된 직책 은 보통 세 가지 가 있 습 니 다. * * 대상 자체 가 가지 고 있 는 직책, 대상 을 만 드 는 직책 과 사용 대상 의 직책 입 니 다. * *이렇게 쓰 면 직책 이 분명 하고 그 다음은 확장 하기 쉽다.예 를 들 어 나 는 지금 그리 기 자 를 새로 추가 하려 고 하 는데, 단지 하나의 종류 만 추가 하면 된다.또한 공장 방법 모델 은 전형 적 인 디 결합 구조 이다.벽 체 그리 기 클래스 를 바 꾸 려 면 공장 방법 을 수정 하기 만 하면 새 대상 을 만 드 는 파일 이 필요 하지 않 습 니 다.
쓸모
참고 링크: TS 범 형 참고 서적: 《 디자인 모델 의 선 》
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.