// 创建手机抽象工厂 class MobilePhoneFactory { // 提供操作系统的接口 createOS() { throw new Error('抽象工厂不允许直接调用,你需要将我重写'); } // 提供硬件的接口 createHardWare() { throw new Error('抽象工厂不允许直接调用,你需要将我重写'); } } // 生产一种新的手机产品线(如:安卓高通手机) class FakeStarFactory extends MobilePhoneFactory{ // 操作系统 createOs() { return new AndriodOS(); } // 硬件 createHardWare() { return new QualCommHardWare(); } } // 定义操作系统这类产品的抽象产品类 class OS { controlHardWare() { throw new Error('抽象产品方法不允许直接调用,你需要将我重写'); } } class AndriodOS extends OS { controlHardWare() { console.log('我会用安卓的方式来操作硬件'); } } class AppleOS extends OS { controlHardWare() { console.log('我会用苹果的方式来操作硬件'); } } // 硬件类产品同理 // 定义手机硬件这类产品的抽象产品类 class HardWare { // 手机硬件的共性方法,这里提取了“根据命令运作”这个共性 operateByOrder() { throw new Error('抽象产品方法不允许直接调用,你需要将我重写'); } } // 定义具体硬件的具体产品类 class QualCommHardWare extends HardWare { operateByOrder() { console.log('我会用高通的方式去运转'); } } class MiHardWare extends HardWare { operateByOrder() { console.log('我会用小米的方式去运转'); } } // 生产一台高通安卓手机 var phone= new FakeStarFactory(); // 拥有操作系统 var myOs = phone.createOs(); // 拥有硬件 var myHardWare = phone.createHardWare(); // 启动操作系统(输出“我会用安卓的方式来操作硬件”) myOs.controlHardWare(); // 唤醒硬件(输出“我会用高通的方式去运转”) myHardWare.operateByOrder();
body是什么厂[JS设计模式]:工厂模式(3)
未经允许不得转载:上海聚慕医疗器械有限公司 » body是什么厂[JS设计模式]:工厂模式(3)











