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.