抽象工厂模式(Abstract Factory) 通过类的抽象使得业务适用于一个产品类簇的创建,而不负责创建某一类产品的实例。
JS中是没有直接的抽象类的,因此我们需要在类的方法中抛出错误来模拟抽象类,如果继承的子类中没有覆写该方法而调用,就会抛出错误。

//汽车抽象类
var Car = function(){};
Car.prototype = {getPrice: function(){return new Error( "抽象方法不能直接调用" );}
}

子类继承父类,如果没有重写父类的方法而使用,会报错。

我们不能使用它来创建一个真实的对象,一般用来作为父类来创建一些子类

    var AbstractFactory = function(subType,superType){//判断抽象工厂种是否有这个抽象类if(typeof(AbstractFactory[superType])=='function'){//缓存类function F(){};//继承父类属性和方法F.protorype = new AbstractFactory[superType]();//将子类constructor指向子类subType.constructor = subType;//子类原型继承"父类"subType.prototype = new F();}else{//不存在该抽象类抛出错误throw new Error('未创建该抽象类');}}//小汽车抽象类AbstractFactory.Car = function(){this.type = 'Car';}AbstractFactory.Car.prototype = {getPrice : function(){return new Error('抽象方法不能调用!');}}

抽象工厂其实是一个实现子类继承父类的方法,在这个方法中我们需要传入子类以及要继承父类的名称。 
过渡类的原型继承,不是继承父类的原型,而是通过new 复制一个父类的实例,过渡类不仅仅继承了父类的原型方法,还继承了父类的对象属性.

var BMW = function(price){this.price = price;
}
//抽象工厂实现对Car抽象类的继承
AbstractFactory(BMW,'Car');
BMW.prototype.getPrice = function(){return this.price;
}
var bmw = new BMW(100000);
console.log(bmw.getPrice());

欢迎大神多多指点。qq:274501366

js设计模式抽象工厂模式相关推荐

  1. 系统架构技能之设计模式-抽象工厂模式

    一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...

  2. 常见设计模式—抽象工厂模式

    设计模式-抽象工厂模式 1.什么是抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其它工厂,是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品. 2.角色分 ...

  3. 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)

    [JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...

  4. java设计模式---抽象工厂模式

    工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准. 以开发项目的DAO层为例,在项 ...

  5. C++设计模式--抽象工厂模式

    前言 前面有两篇文章分别介绍了简单工厂模式和工厂方法模式,这两种模式都比较常见,今天介绍工厂模式的最后一种,抽象工厂模式. 抽象工厂模式(Abstract Factory Pattern)是所有形态的 ...

  6. python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对 ...

  7. 05设计模式——抽象工厂模式

    前言:以下总结来自龙哥---左潇龙博客. 总结的很到位,附上博客链接:http://www.cnblogs.com/zuoxiaolong/p/pattern6.html 抽象工厂模式算是工厂相关模式 ...

  8. [设计模式] ------ 抽象工厂模式

    抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了. 其实就是相当于将创建哪个工厂的权利再次放给调用端. 调用端在调用的时 ...

  9. C++设计模式-抽象工厂模式

    目录 基本概念 代码与实例 基本概念 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,从而无需指定他们具体的类. 抽象工厂的好处: 1. 易于交换产品系列 ...

最新文章

  1. socket心跳机制图片_WebSocket心跳检测和重连机制
  2. MySQL慢查询日志分析(一)
  3. Swift 优雅的打印Log
  4. 文件查询之三:文件和目录的批量操作
  5. 杭电4506小明系列故事——师兄帮帮忙
  6. micropython 驱动 移植_MicroPython v1.12 版本更新
  7. 收集常用的PHP正则表达式及使用
  8. python获取随机大小写字母_python获取随机大小写字母
  9. 字符串 hash 唯一数字_物联网安全:基于Hash的RFID安全认证协议
  10. 利用Linux socket 模拟大华IPC发送广播包,让大华客户端搜索到一个模拟的ip摄像头
  11. 今日分享|每日领红包最高618,全是无门槛使用!
  12. RSA算法详解与练习
  13. 面试- 阿里-. 大数据题目- 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?...
  14. 数据仓库概念以及选型
  15. 谁可以参与初创股权分配?
  16. ZigBee数据机房能耗监控系统
  17. MiniAlphaGo黑白棋 蒙特卡洛搜索
  18. HCIP第十二天VLAN实验
  19. 聊聊我的英语学习经验
  20. Xilinx IP核AXI Memory Mapped to PCI Express使用

热门文章

  1. android 初始化 脚本,Android init language与init.rc初始化脚本
  2. 给宽带加速,一分钟学会,释放电脑保留的20%宽带资源
  3. centos上面谷歌浏览器安装
  4. 华唯鑫能油来解说生物燃料油的由来
  5. 一些有关UED的团队和个人博客
  6. 关于搭建代理服务器的全过程详细
  7. 分享118个HTML个性简实模板,总有一款适合您
  8. Meta、微软、英伟达、高通、Epic、Unity等成立元宇宙标准论坛
  9. 【windows10】frpc开机自启动
  10. 强化学习和生成对抗网络