⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7.02 - the factory pattern.js

📁 JS设计模式源代码
💻 JS
字号:
/* BicycleShop class (abstract). */var BicycleShop = function() {};BicycleShop.prototype = {  sellBicycle: function(model) {    var bicycle = this.createBicycle(model);        bicycle.assemble();    bicycle.wash();        return bicycle;  },  createBicycle: function(model) {    throw new Error('Unsupported operation on an abstract class.');  }};/* AcmeBicycleShop class. */var AcmeBicycleShop = function() {};extend(AcmeBicycleShop, BicycleShop);AcmeBicycleShop.prototype.createBicycle = function(model) {  var bicycle;  switch(model) {    case 'The Speedster':      bicycle = new AcmeSpeedster();      break;    case 'The Lowrider':      bicycle = new AcmeLowrider();      break;    case 'The Flatlander':      bicycle = new AcmeFlatlander();      break;    case 'The Comfort Cruiser':    default:      bicycle = new AcmeComfortCruiser();  }  Interface.ensureImplements(bicycle, Bicycle);  return bicycle;  };/* GeneralProductsBicycleShop class. */var GeneralProductsBicycleShop = function() {};extend(GeneralProductsBicycleShop, BicycleShop);GeneralProductsBicycleShop.prototype.createBicycle = function(model) {  var bicycle;  switch(model) {    case 'The Speedster':      bicycle = new GeneralProductsSpeedster();      break;    case 'The Lowrider':      bicycle = new GeneralProductsLowrider();      break;    case 'The Flatlander':      bicycle = new GeneralProductsFlatlander();      break;    case 'The Comfort Cruiser':    default:      bicycle = new GeneralProductsComfortCruiser();  }  Interface.ensureImplements(bicycle, Bicycle);  return bicycle;};/* Usage. */var alecsCruisers = new AcmeBicycleShop();var yourNewBike = alecsCruisers.sellBicycle('The Lowrider');var bobsCruisers = new GeneralProductsBicycleShop();var yourSecondNewBike = bobsCruisers.sellBicycle('The Lowrider');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -