iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JavaScript的3种工厂模式怎么用
  • 739
分享到

JavaScript的3种工厂模式怎么用

2023-06-30 10:06:44 739人浏览 八月长安
摘要

这篇“javascript的3种工厂模式怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript的3种工厂模

这篇“javascript的3种工厂模式怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript的3种工厂模式怎么用”文章吧。

前言;

工厂模式(Factory Pattern)是设计模式中最常用的设计模式之一。

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

工厂模式分为:

  • 简单工厂模式

  • 工厂方法模式

  • 抽象工厂模式

一、简单工厂模式

简单工厂模式,也可以叫静态工厂模式,用一个工厂对象创建同一类对象类的实例。

比如:

// 0.0.2/es5.simple.factory.jsfunction Role(options){this.role = options.role;this.permissions = options.permissions;}Role.prototype.show = function (){var str = '是一个' + this.role + ', 权限:' + this.permissions.join(', ');console.log(str)}function simpleFactory(role){switch(role) {case 'admin':return new Role({role: '管理员',permissions: ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论']});break;case 'developer':return new Role({role: '开发者',permissions: ['开发', '推送', '提问', '评论']});break;default:throw new Error('参数只能为 admin 或 developer');}}// 实例const xm = simpleFactory('admin');xm.show();const xh = simpleFactory('developer');xh.show();const xl = simpleFactory('guest');xl.show();

ES6 写法:

// 0.0.2/simple.factory.jsclass SimpleFactory {constructor(opt) {this.role = opt.role;this.permissions = opt.permissions;}// 静态方法static create(role) {switch (role) {case 'admin':return new SimpleFactory({role: '管理员',permissions: ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论']});break;case 'developer':return new SimpleFactory({role: '开发者',permissions: ['开发', '推送', '提问', '评论']});break;default:throw new Error('参数只能为 admin 或 developer');}}show() {const str = `是一个${this.role}, 权限:${this.permissions.join(', ')}`;console.log(str);}}// 实例const xm = SampleFactory.create('admin');xm.show();const xh = SampleFactory.create('developer');xh.show();const xl = SampleFactory.create('guest');xl.show();

上例中,simpleFactory就是一个简单工厂,2个实例对应不同的权限,调用工厂函数时,只需传递 admin 或 developer 就可获取对应的实例对象。

注意:作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

二、工厂方法模式

将实际创建对象工作推迟到子类当中,核心类就成了抽象类。

这样添加新的类时就无需修改工厂方法,只需要将子类注册进工厂方法的原型对象中即可。

比如:

// 0.0.2/es5.function.factory.jsfunction FunctionFactory(role) {if(!(['admin', 'developer'].indexOf(role) > -1)){throw new Error('参数只能为 admin 或 developer');}// 安全的工厂方法if (this instanceof FunctionFactory) {return this[role]();}return new FunctionFactory(role);}FunctionFactory.prototype.show = function () {var str = '是一个' + this.role + ', 权限:' + this.permissions.join(', ');console.log(str)}FunctionFactory.prototype.admin = function (permissions) {this.role = '管理员';this.permissions = ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论'];}FunctionFactory.prototype.developer = function (permissions) {this.role = '开发者';this.permissions = ['开发', '推送', '提问', '评论'];}var xm = FunctionFactory('admin');xm.show();var xh = FunctionFactory('developer');xh.show();var xl = FunctionFactory('guest');xl.show();

当需要添加新类时,只需挂载在 FunctionFactory.prototype

 上,无需修改工厂方法,也实现了 OCP 原则。

OCP(Open-Closed Principle,开放-封闭原则)由Bertrand Meyer在1988年提出,含义是“软件实体( 类、模块、函数等 )应该是可扩展的,但不可修改”。

  • 可扩展(Open for extension,即“对于扩展是开放的”) 意思是软件模块的行为(功能)可以变化、可以扩展。

  • 不可修改(Closed for modifications,即“对于修改是封闭的”) 意思是在扩展新功能时,不需要修改原有代码模块,而是另外增加一些新的代码。

抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

JavaScript的3种工厂模式怎么用

抽象工厂只留对外的口子,不做事,留给外界覆盖(子类重写接口方法以便创建的时候指定自己的对象类型)。主要用于对 产品类簇

的创建,不直接生成实例(简单工厂模式和工厂方法模式都是生成实例)。

比如 Jquery:

// 0.0.2/Jquery.factory.js// 工厂模式class jQuery {constructor(selector) {let slice = Array.prototype.slice;let dom = slice.call(document.querySelectorAll(selector));let len = dom ? dom.length : 0;for (let i = 0; i < len; i++) {this[i] = dom[i];}this.length = lenthis.selector = selector || ''}addClass(name) {console.log(name)}html(data) {}// 省略多个 api}// 工厂模式window.$ = function(selector) {return new jQuery(selector);}// 实例const $li = $('li')$li.addClass('item');

以上就是关于“JavaScript的3种工厂模式怎么用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: JavaScript的3种工厂模式怎么用

本文链接: https://www.lsjlt.com/news/328185.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript的3种工厂模式怎么用
    这篇“JavaScript的3种工厂模式怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript的3种工厂模...
    99+
    2023-06-30
  • 分享JavaScript的 3 种工厂模式的用法
    目录一、简单工厂模式二、工厂方法模式三、抽象工厂模式四、小结前言; 工厂模式(Factory Pattern)是设计模式中最常用的设计模式之一。 这种类型的设计模式属于创建型模式,它...
    99+
    2024-04-02
  • JAVA设计模式之工厂模式(三种工厂模式)
    1.工厂模式可以分为三类: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 简单工厂其实不是一个标准的的设计模式。GOF 23 种设计模式...
    99+
    2023-09-04
    设计模式
  • 什么是Javascript工厂模式
    这篇文章主要介绍“什么是Javascript工厂模式”,在日常操作中,相信很多人在什么是Javascript工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是Jav...
    99+
    2024-04-02
  • JavaScript中怎么实现工厂模式
    本篇文章为大家展示了JavaScript中怎么实现工厂模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是工厂模式工厂模式是用来创建对象的一种最常用的设计模式。...
    99+
    2024-04-02
  • JavaScript工厂模式详解
    目录简单工厂模式(Simple Factory)工厂方法模式(Factory Method)安全的工厂方法抽象工厂模式(Abstract Factory)总结简单工厂模式(Simpl...
    99+
    2024-04-02
  • javascript设计模式之工厂模式
    目录介绍UML类图工厂模式的场景总结介绍 将new操作单独封装遇到new时,就要考虑是否应该使用工厂模式比如买汉堡:直接点餐、取餐,我们不会亲手做,商店要“封装&rdqu...
    99+
    2024-04-02
  • 三种工厂模式的C++实现
    引出工厂模式的设计问题◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现...
    99+
    2024-04-02
  • JavaScript抽象工厂及工厂方法模式是什么
    这篇文章主要介绍“JavaScript抽象工厂及工厂方法模式是什么”,在日常操作中,相信很多人在JavaScript抽象工厂及工厂方法模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • golang工厂模式怎么应用
    Golang的工厂模式可以应用于以下场景: 创建对象时需要根据不同的条件返回不同的具体对象实例。 需要隐藏对象创建的具体过程,只暴...
    99+
    2023-10-23
    golang
  • java设计模式--三种工厂模式详解
    目录简单工厂代码:1.产品接口2.产品接口实现子类3.简单工厂类4.调用工厂5.测试工厂方法代码:1.工厂接口2.工厂实现子类3.产品接口4.产品实现子类5.调用6.测试1.产品接口...
    99+
    2024-04-02
  • java工厂模式怎么写
    这篇文章主要介绍“java工厂模式怎么写”,在日常操作中,相信很多人在java工厂模式怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java工厂模式怎么写”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-19
  • golang实现简单工厂、方法工厂、抽象工厂三种设计模式
    1、简单工厂: 第一步:创建一个文章接口,需要实现阅读和写作的功能。 type Article interface { ReadArticle() string WriteArt...
    99+
    2024-04-02
  • JavaScript设计模式之工厂模式的示例分析
    这篇文章主要为大家展示了“JavaScript设计模式之工厂模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaS...
    99+
    2024-04-02
  • php单例模式和工厂模式怎么应用
    单例模式和工厂模式是两种设计模式,可以在PHP中进行应用。1. 单例模式:单例模式是一种保证一个类只有一个实例对象的模式。在PHP中...
    99+
    2023-09-29
    php
  • java的工厂模式怎么实现
    在Java中,工厂模式可以通过两种方式来实现:简单工厂模式和抽象工厂模式。 简单工厂模式: 简单工厂模式的核心是定义一个工厂类,该类...
    99+
    2024-02-29
    java
  • Java简单工厂,工厂方法,抽象工厂模式怎么实现
    这篇文章主要讲解了“Java简单工厂,工厂方法,抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java简单工厂,工厂方法,抽象工厂模式怎么实现”吧!1、简单工厂模式1.定...
    99+
    2023-06-29
  • Flask使用工厂模式
    目录1、工厂模式2、使用工厂方法创建 app 对象 1、工厂模式 在面向对象编程中,工厂模式是开发过程中最常用的设计模式之一,属于创建型模式,就是通过一个接口函数或对象来创建其他对象...
    99+
    2024-04-02
  • golang工厂模式怎么实现
    在Golang中,工厂模式可以通过使用接口和结构体来实现。下面是一个简单的例子:首先,定义一个接口,表示产品的抽象:gotype P...
    99+
    2023-10-20
    golang
  • php抽象工厂模式怎么应用
    抽象工厂模式是一种创建对象的设计模式,它提供了一种封装一组具有相似功能的工厂的方式。在PHP中,可以通过以下步骤应用抽象工厂模式:1...
    99+
    2023-08-30
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作