定义
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: str