TypeScript抽象工厂的模式

一 .工厂模式的总结。 为创建一组相关或互相依赖的对象体统一个接口,无需指定具体类。

二. 快速的例子。

interface factoryInterface {

    produceA(): AInterface;

    produceB(): BInterface;

}

interface AInterface {

    dodo(): void;

}

interface BInterface {

    dodo(): void;

}

class a1 implements AInterface {

    public constructor() {

        YBLog.log("Factory", "  A1 构造函数 ");

    }

    public dodo(): void {

        YBLog.log("Factory", "  A1  dodo ");

    }

}

class a2 implements AInterface {

    public constructor() {

        YBLog.log("Factory", "  A2 构造函数 ");

    }

    public dodo(): void {

        YBLog.log("Factory", "  A2  dodo ");

    }

}

class b1 implements BInterface {

    public constructor() {

        YBLog.log("Factory", "  B1 构造函数 ");

    }

    public dodo(): void {

        YBLog.log("Factory", "  B1  dodo ");

    }

}

class b2 implements BInterface {

    public constructor() {

        YBLog.log("Factory", "  B2 构造函数 ");

    }

    public dodo(): void {

        YBLog.log("Factory", "  B2  dodo ");

    }

}

// 

class cretorA implements factoryInterface {

    public constructor() { };

    public produceA(): AInterface {

        return new a1();

    }

    public produceB(): BInterface {

        return new a2();

    }

}

class cretorB implements factoryInterface {

    public constructor() { };

    public produceA(): AInterface {

        return new b1();

    }

    public produceB(): BInterface {

        return new b2();

    }

}

let cretora:cretorA = new cretorA();

let cretorb:cretorB = new cretorB();

cretora.produceA().dodo();

cretora.produceB().dodo();

cretorb.produceA().dodo();

cretorb.produceB().dodo();

三.优点:封装性,不必关心如何生产。 

四.缺点:需要增加类的时候要增加工厂,修改抽象工厂的时候每个工厂实现类都要改。

猜你喜欢

转载自blog.csdn.net/ting100/article/details/108625202