抽象工厂模式
抽象工厂(抽象工厂类):它是所有具体工厂的父类,声明了创建一个产品族的方法,并由其子类去实现。抽象工厂也可以声明成接口。
我们用一个具体的例子说明:
// A 产品的抽象
abstract class AbstractProductA {
abstract methodA(): void;
}
// B 产品的抽象
abstract class AbstractProductB {
abstract methodB(): void;
}
// 抽象工厂,声明了创造 A 产品和 B 产品的抽象方法
abstract class AbstractFactory {
abstract createProductA(): AbstractProductA;
abstract createProductB(): AbstractProductB;
}
// A 产品
class ProductA extends AbstractProductA {
constructor(value: String) {
super();
console.log(value);
}
methodA(): void { }
}
// B 产品
class ProductB extends AbstractProductB {
constructor(value: String) {
super();
console.log(value);
}
methodB(): void { }
}
// 深圳工厂,能够生产 A B 两个产品,同时告知产地是深圳
class ShenzhenFactory extends AbstractFactory {
createProductA(): ProductA {
return new ProductA('ProductA made in Shenzhen');
}
createProductB(): ProductB {
return new ProductB('ProductB made in Shenzhen');
}
}
// 上海工厂,能够生产 A B 两个产品,同时告知产地是上海
class ShanghaiFactory extends AbstractFactory {
createProductA(): ProductA {
return new ProductA('ProductA made in Shanghai');
}
createProductB(): ProductB {
return new ProductB('ProductB made in Shanghai');
}
}