定义
优缺点
优点
用户只需要关心产品对应的工厂;添加新产品只要添加一个具体的工厂和具体的产品
缺点
类个数成倍增加(增加一个产品会增加具体类和实现工厂)
应用场景
角色
- Creator: 抽象工厂类
- ConcreteCreator:具体工厂类
- Product:抽象产品类
- ConcreteProduct:具体产品类
类图

代码
```typescript // 抽象产品接口 interface Product{ method1() : void; method2() : void; }
// 具体产品一 class ConcreteProduct1 implements Product { constructor(){} method() {
}method() {}
}
// 具体产品二 class ConcreteProduct2 implements Product { constructor(){} method1() {
}method2() {}
}
// 抽象工厂 abstract class Creator { public abstract createProduct(type : number) : Product; }
// 具体工厂 class ConcreteCreator extends Creator { constructor(){ super(); }
public createProduct(type : number) : Product {let product = null;if (type === 1) {product = new ConcreteProduct1();} else if (type === 2) {product = new ConcreteProduct2();}return product;}
}
// 使用 const creator : Creator = new ConcreteCreator(); const myProduct : Product = creator.createProduct(1); ```
