抽象工厂模式

82 阅读1分钟

抽象工厂是一种常见的设计模式。此模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。

优点容易改变产品的系列 image.png

// 抽象工厂模式
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();

image.png