TypeScript abstract factory pattern

1. Summary of the factory model. In order to create an interface for a group of related or interdependent objects, there is no need to specify a specific class.

2. A quick example.

interface factoryInterface {

    produceA (): AInterface;

    produceB(): BInterface;

}

interface AInterface {

    dodo(): void;

}

interface BInterface {

    dodo(): void;

}

class a1 implements AInterface {

    public constructor() {

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

 

    }

    public dodo(): void {

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

    }

}

class a2 implements AInterface {

    public constructor() {

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

    }

    public dodo(): void {

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

    }

}

 

class b1 implements BInterface {

    public constructor() {

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

    }

    public dodo(): void {

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

    }

}

class b2 implements BInterface {

    public constructor() {

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

    }

    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();

3. Advantages: encapsulation, no need to care about how to produce. 

Four. Disadvantages: Add factories when adding classes, and change each factory implementation class when modifying abstract factories.

 

Guess you like

Origin blog.csdn.net/ting100/article/details/108625202