有关JS抽象工厂模式(详细教程)

本篇文章主要给大家总结了一下作者在学习js抽象工厂模式时的经验和总结,有兴趣的朋友跟着学习下吧。

以下就是作者学习中遇到的问题以及代码实例,最后还给大家关于JS抽象工厂模式的学习做了总结。

抽象工厂模式(Abstract Factory)就是通过类的抽象使得业务适用于一个产品类簇的创建,而不负责某一类产品的实例。

JS中是没有直接的抽象类的,abstract是个保留字,但是还没有实现,因此我们需要在类的方法中抛出错误来模拟抽象类,如果继承的子类中没有覆写该方法而调用,就会抛出错误。

const Car = function() { }Car.prototype.getPrice = function() {return new Error('抽象方法不能调用')}

登录后复制

实现

面向对象的语言里有抽象工厂模式,首先声明一个抽象类作为父类,以概括某一类产品所需要的特征,继承该父类的子类需要实现父类中声明的方法而实现父类中所声明的功能:

/*** 实现subType类对工厂类中的superType类型的抽象类的继承* @param subType 要继承的类* @param superType 工厂类中的抽象类type*/const VehicleFactory = function(subType, superType) { if (typeof VehicleFactory[superType] === 'function') {  function F() {   this.type = '车辆'  }   F.prototype = new VehicleFactory[superType]()  subType.constructor = subType  subType.prototype = new F()        // 因为子类subType不仅需要继承superType对应的类的原型方法,还要继承其对象属性 } else throw new Error('不存在该抽象类')}VehicleFactory.Car = function() { this.type = 'car'}VehicleFactory.Car.prototype = { getPrice: function() {  return new Error('抽象方法不可使用') }, getSpeed: function() {  return new Error('抽象方法不可使用') }}const BMW = function(price, speed) { this.price = price this.speed = speed}VehicleFactory(BMW, 'Car')    // 继承Car抽象类BMW.prototype.getPrice = function() {    // 覆写getPrice方法 console.log(`BWM price is ${this.price}`)}BMW.prototype.getSpeed = function() { console.log(`BWM speed is ${this.speed}`)}const baomai5 = new BMW(30, 99)baomai5.getPrice()             // BWM price is 30baomai5 instanceof VehicleFactory.Car    // true

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在js中如何实现判断文件类型大小

在js中如何实现登录需要滑动验证

在Angular中如何实现下拉框模糊查询功能

在Nodejs中有关crypto模块安全知识(详细教程)

在angularjs中如何实现分页和搜索功能

使用vue如何引入ueditor及node后台配置

在Node.js中如何搭建小程序后台服务

在js中有关文件加载优化方面的问题

使用nodejs+mongodb+vue如何配置ueditor

以上就是有关JS抽象工厂模式(详细教程)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2636510.html

(0)
上一篇 2025年3月7日 05:06:44
下一篇 2025年2月21日 18:30:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 详细解读JS中!!符号问题

    !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false。下面看看通过本文给大家介绍了js中的!!,需要的朋友参考下吧 !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也…

    编程技术 2025年3月7日
    200
  • 在JS中如何实现动态添加元素

    这篇文章主要给大家介绍了关于js动态添加元素及绑定事件造成程序重复执行的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。 前言 本文主要给大家分享一下前段时间遇到的bug,…

    2025年3月7日
    200
  • 关于JS的函数调用栈stack size的计算方法

    本篇文章给大家分享了关于js的函数调用栈stack size的计算方法的相关知识点,有兴趣的朋友参考学习下。 如果你写了一个一直调用自身的死循环,那么恭喜你,很快就可以看到报错:Uncaught RangeError: Maximum ca…

    编程技术 2025年3月7日
    200
  • Node.js中Request模块处理HTTP协议请求的使用介绍

    这篇文章主要介绍了node.js中request模块处理http请求的基本使用教程,request也支持oauth的签名请求,很好很强大,需要的朋友可以参考下 这里来介绍一个Node.js的模块——request。有了这个模块,http请求…

    2025年3月7日
    200
  • angularjs到底是什么?angularjs都可以做什么?

    本篇文章主要的向大家介绍了关于angularjs的介绍和作用。希望大家认真阅读,现在就让我们一起来看这篇关于angularjs的介绍和作用的文章吧 首先我们要了解angularjs到底是什么? AngularJs(后面就简称ng了)是一个用…

    编程技术 2025年3月7日
    200
  • js能做什么

    在前端中,JavaScript能实现的有很多,其中就包括数据可视化、移动应用方面、服务端、全平台应用、游戏方面、VR方面、方面,还有一些操作系统等多个领域可以使用JavaScript去实现。 本文操作环境:windows7系统、Dell G…

    2025年3月7日
    200
  • 网页中写js有什么作用

    javascript到底可以做什么呢? 事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:页面加载时触发事件;页面关闭时触发事件;用户点击按钮执行动作;验证用户输入内容的合法性… 2.同时呢,我们也可以使用多种方法来执行 JavaS…

    2025年3月7日
    200
  • vscode运行js文件出现乱码

    错误如图: 解决方法: 如果是中文乱码的话,可以到设置里边把「Auto Guess Encoding」这一项勾起来,如图: (如果不是这个原因,可能是因为没安装 Node.js 和配置 Node.js 环境) 相关文章教程推荐:vscode…

    2025年3月7日
    200
  • 自学 HTML5 要多久

    自学 HTML5 要多久 前端除了HTML5之外还有JavaScript和Css,如果只学习HTML5的话半个月到一个月之间就能学会,但是仅仅HTML5是不够的,还需要学习JavaScript和CSS这些,基础学习一个月也足够了。 Java…

    2025年3月7日
    200
  • 浏览器的事件循环

    前言 浏览器事件循环,基础面试中大部分都会问的,本文讲讲这个知识点。 事件循环机制 事件循环是负责执行代码、收集和处理事件以及执行队列中的子任务的一套机制。 在事件循环机制中,使用的栈数据结构便是执行上下文栈,每当有函数被调用时,便会创建相…

    2025年3月7日
    200

发表回复

登录后才能评论