抽象工厂是一种常见的设计模式。此模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。
优点容易改变产品的系列
// 抽象工厂模式
interface abstracFactory {
phone(): iPhoneProduct
router(): routerProduct
}
// 华为工厂
class huaweiFactory implements abstracFactory {
phone() {
return new huaweiiPhone();
}
router() {
return new huaweiRouter();
}
}
//小米工厂
class xiaomiFactory implements abstracFactory {
phone() {
return new xiaomiiPhone();
}
router() {
return new xiaomiRouter();
}
}
// 抽象 手机产品对象
interface iPhoneProduct {
call(): void
}
//小米手机
class xiaomiiPhone implements iPhoneProduct {
call() {
console.log("小米来电");
}
}
//华为手机
class huaweiiPhone implements iPhoneProduct {
call() {
console.log("华为来电");
}
}
// 抽象 路由器产品对象
interface routerProduct {
next(): void
}
//小米路由器
class xiaomiRouter implements routerProduct {
next() {
console.log("小米网络");
}
}
//华为路由器
class huaweiRouter implements routerProduct {
next() {
console.log("华为网络");
}
}
console.log("============小米产品============");
//创建小米工厂
const XMFactory: xiaomiFactory = new xiaomiFactory();
//生产小米手机
const xiaomiPhone: xiaomiiPhone = XMFactory.phone();
xiaomiPhone.call();
//生产小米路由器
const xiaomiiRouter: xiaomiRouter = XMFactory.router();
xiaomiiRouter.next();
console.log("============华为产品============");
//创建华为工厂
const HWFactory: huaweiFactory = new huaweiFactory();
//生产华为手机
const huaweiPhone: huaweiiPhone = HWFactory.phone();
huaweiPhone.call();
//生产华为路由器
const hwRouter: huaweiRouter = HWFactory.router();
hwRouter.next();