js工厂方法模式

2023-11-08

	<h1>给我一张名片——工厂方法模式</h1>
	<p>工厂方法模式(Factory Method):通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例。</p>
    <p>工厂方法模式本意是说将实际创建对象工作推迟到子类中。这样核心类就成了抽象类,JavaScript没有像传统类那样的方式轻易创建抽象类,
         所以在JavaScript中实现工厂方法模式我们只需要参考它的核心思想即可。所以我们可以将工厂方法看作是一个实例化对象的工厂类。安全起见,我们采用安全模式类,
         而我们将创建对象的基类放在工厂方法类的原型中即可。</p>
   <script>
      //安全的工厂方法模式
      var Factory = function( type, content ){
          if( this instanceof Factory ){
             var s = new this[ type ]( content );
             return s;
          }else{
             new Factory( type, content );
          }
      };
      
      Factory.prototype = {
         Java: function( content ){
            //....
         },
         JavaScript: function( content ){
            //....
         },
         UI: function( content ){
            this.content = content;
            (function( content){
               var oDiv = document.createElement( "div" );
               oDiv.innerHTML = content;
               oDiv.style.border = "1px solid #333";
               document.getElementById( "container" ).appendChild( oDiv );
            } )( content );
         },
         php: function( content ){
            //....
         }
      }
   </script>
   <p>这样我们以后如果想添加其他的类,是不是只需要写在Factory这个工厂类的原型里就可以了。</p>
   <p>这样以后就不必担心创建时做任何修改,就好比你在Factory类的原型里面注册一张名片,
   	以后需要哪类只需要拿这张名片,查找里面的信息就能找到这个类了,所以就不用担心使用时找不到基类的问题了。</p>
   	<p>忆之获:对于创建多类对象,前面学过的简单工厂模式就不太适用了,这是简单工厂模式的局限,当然这正是工厂方法模式的价值之所在,通过工厂方法模式我们可以
   		轻松创建类型的实例对象,这样工厂方法对象在创建对象的方式也避免了使用者与对象类之间的耦合,用户不必关心创建该对象的具体类,只需调用工厂方法即可。</p>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js工厂方法模式 的相关文章

  • Java OCR 图像智能字符识别技术,可识别中文

    几天一直在研究OCR技术 据我了解的情况 国内最专业的OCR软件只有2家 清华TH OCR和汉王OCR 看了很多的OCR技术发现好多对英文与数字的支持都很好 可惜很多都不支持中文字符 Asprise OCR Tesseract 3 0以前的
  • 【apifox/postman】使用技巧

    文章目录 一 apifox 1 1 设置全局变量 1 1 1 token 二 postman 2 1 设置全局变量 一 apifox 1 1 设置全局变量 1 1 1 token 首先设置 login 接口后 取 token 设置到 名为
  • 零基础,零成本,部署一个属于你的大模型

    前言 看了那么多chatGPT的文章 作为一名不精通算法的开发 也对大模型心痒痒 但想要部署自己的大模型 且不说没有算法相关的经验了 光是大模型占用的算力资源 手头的个人电脑其实也很难独立部署 就算使用算法压缩后的大模型 部署在个人电脑上
  • pytorch: 给tensor删除或者添加维度为1的维度(squeeze和unsqueeze)

    删除tensor中维度为1的维度 在pytorch中 用torch squeeze 函数或者tensor的自身成员函数squeeze 去除维度为1的维度 import torch x torch randn 3 1 4 1 2 a x sq
  • Servlet学习(八):Session

    一 Session的基本使用 1 概念 Session 服务端会话跟踪技术 将数据保存到服务端 Session是存储在服务端而Cookie是存储在客户端 存储在客户端的数据容易被窃取和截获 存在很多不安全的因素 存储在服务端的数据相比于客户
  • GDB 格式化结构体输出及记录到文件

    GDB 常用命令参考手册 set print address set print address on 打开地址输出 当程序显示函数信息时 GDB会显出函数的参数地址 系统默认为打开的 show print address 查看当前地址显示
  • JDBC五种连接方式详解

    目录 前言 二 JDBC程序编写步骤 1 总流程图如下 2 五种连接方式 2 1 数据库连接方式一 2 2 数据库连接方式二 2 3 数据库连接方式三 2 4 数据库连接方式四 2 5 数据库连接方式五 总结 前言 JDBC Java Da
  • 【计算机网络】 RTT和RTO

    文章目录 RTT 往返时延 RTO Retransmission Timeout 超时重传时间 RTT 往返时延 RTT Round Trip Time 是计算机网络中的一个重要的性能指标 表示从发送端发送数据开始 到发送端接收到来自接收端
  • STM32学习笔记——EXIT(外部中断)

    目录 一 什么是中断系统 二 中断系统执行流程 三 NVIC 提供中断控制器 CPU的好助手 1 NVIC的作用 STM32 2 NVIC优先级分组 四 EXTI 外部中断 1 EXTI简介 2 EXTI基本结构 3 EXTI框图 五 AF
  • elk笔记12--常见api和设置区别

    elk笔记12 常见api和设置区别 1 freeze 和 close 区别 1 1 freeze介绍 1 2 close介绍 2 persistent 和transient区别 3 两个allocation 说明 本文主要记录 es 中常
  • 《数据结构》将一个带头结点的单链表分解成两个单链表

    将一个带头结点的单链表分解成两个单链表 题目描述 设计一个算法 将一个带头结点的单链表分解成两个具有相同结构的 链表B和C 其中B白哦的结点为A中小于0的结点 C表的结点为A中大于0 的结点 要求B和C 仍利用A表的结点 A表的元素都是非0
  • pyqt5 QLabel详细用法

    QLabel控件类的主要API如下 setAlignment 设置文本的对齐方式 setIndent 设置文本缩进 text 获取文本内容 setText 设置文本内容 selectedText 返回所选择的字符 setBuddy 设置伙伴
  • OpenCV代码提取:遍历指定目录下指定文件的实现

    OpenCV 3 1之前的版本 在contrib目录下有提供遍历文件的函数 用起来比较方便 但是在最新的OpenCV 3 1版本给去除掉了 为了以后使用方便 这里将OpenCV 2 4 9中相关的函数给提取了出来 适合在Windows 64
  • python运行报错:‘NoneType‘ object is not callable

    NoneType object is not callable 空类型对象不可调用 调用了装饰器函数 但是装饰器函数没有返回值 导致使用的函数报错 参照代码的注释 timmer 引用装饰器等于test1 timmer func 所以timm
  • 字节跳动开源 Kelemetry:面向 Kubernetes 控制面的全局追踪系统

    动手点关注 干货不迷路 Kelemetry是字节跳动开发的用于Kubernetes控制平面的追踪系统 它从全局视角串联起多个 Kubernetes 组件的行为 追踪单个 Kubernetes 对象的完整生命周期以及不同对象之间的相互影响 通
  • MongoDB 获取数组中匹配到的第一个元素对象

    例如当前test库中的grade集合中有两条文档数据 如下图所示 相关的两个实体映射类如下 import lombok Data import org springframework data annotation Id import or
  • 政企数智办公潮水里的融云「答卷」

    在这张集合了党政机关 金融保险 交通 能源电力等中大型组织复杂办公需求的高难度答卷上 融云在扎实耐打的通信底层之上 保持灵活的身段和强大的进化能力 稳定而轻盈 在不断变化的环境中正在成为确定性本身 作者 皮爷 出品 产业家 如果说过去两年里
  • 报sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

    使用OkHttpClient的时候 jdk版本1 8 0 151启动不会报错 但jdk版本1 8 0 202启动就会报错 应该是OkHttpClient jdk小版本号高了不行 修改代码如下 public class SSLSocketCl
  • 20.docker之DockerCompose基础进阶

    1 docker compose命令模板 docker compose yml 作用 compose以项目为核心 在项目中定义一组具有相同业务逻辑单元服务运行 注意 在编写docker compose yml文件时 所有的冒号 短横线 后面
  • Spring框架入门基础1:IOC---控制权反转

    Spring框架的优点 方便解耦 简化开发 Spring就是一个大工厂 可以将所有对象创建和依赖关系维护 交给Spring管理 这也是IOC的作用 IOC IOC就是控制反转 将创建对象的过程交给spring进行管理 可以用来减低计算机代码

随机推荐

  • linux命令练习-实验一

    实验序号 一 实验项目 熟悉常用的Linux操作 实验成绩 一 实验目的 为后续上机实验做准备 熟悉常用的Linux操作 1 了解安装Linux的方法 2 熟悉常用的Linux操作 二 实验内容 一 安装Linux Ubuntu 14 以上
  • [12]STM32-NVCI中断优先级管理

    前言 这一篇博客主要讲解NVCI中断优先级分组 优先级设置 因为还没有我还没学到做中断实验 所以有些地方我自己理解得也不是很透彻 这是看了原子哥的视频用自己的话来梳理一下思路 基础知识 STM32 有 84 个中断 包括 16 个内核中断和
  • 网络编程——基础知识

    全文目录 网络发展 协议 OSI七层模型 TCP IP五层 或四层 模型 网络传输 网络地址 IP地址 MAC地址 网络通信的本质 网络发展 网络没有出来之前计算机都是相互独立的 网络就是将独立的计算机连接在一起 局域网和广域网的区别只是范
  • 大数除法(模拟除)

    所谓大数除法就是很大的数 用unsigned long long 都存不下的数 的有关除法的运算 但是以下方法只适合求取高精度对低精度的大数除法可用 也就是说对被除数有限制 一般来说是在int 型的范围内的 include
  • 数据结构第三章栈和队列(一)

    数据结构 第三章栈和队列 include
  • 点云库PCL学习笔记 -- 输入输出IO -- 6.PCL中记录时间长度TicToc 类和系统Time 类

    点云库PCL学习笔记 输入输出IO 6 PCL中记录时间长度TicToc 类和系统Time 类 PCL库中用于记录时间长度的方法 第一种 TicToc 类的方法 添加头文件 include
  • pytorch(仅供自己参考勿看)

    一 安装Anaconda 下载pytorch前最好先安装Anaconda 可以按照以下方法下载 https blog csdn net weixin 50888378 article details 109022585 二 安装pytorc
  • 如何提高for循环的效率--兆易创新一面

    1 实例化变量放在循环外 include
  • 使用Lubuntu开发Android应用

    之前下了个ubuntu来编译Android源码并且开发App 后来发现桌面环境不太好用 而且32位Linux不能顺利编译Android源码 最近有空便重新下载Lubuntu 64位并配置好所有配置 其间颇多不顺 特记录下来 通过下面的步骤连
  • 8.1数据结构作业

    include
  • vue后台管理系统之日志管理模块

    前端的后台的日志管理模块功能的实现 使用的是elementUI框架 这是日志管理模块实现的效果图 div class log header div div div
  • error C2220: warning treated as error - no object file generated的处理方法

    很久以前在win2k DDK写的一个驱动 居然在2003ddk下编译不过去 真是奇怪 环境变量改为win2k 也不行 先是error C2220 warning treated as error no object file generat
  • 基于centos开发的server系统单机部署gp(rpm)

    1 下载安装包 rpm deb或源码 打开greenplum官网https github com greenplum db gpdb releases 下载安装包 或Greenplum Database Greenplum Database
  • 一个公式告诉你为什么程序员要转算法工程师

    原来的标题是 算法工程师工资调查 20170611 今天 2017年6月11日 爬了某招聘网站的十大城市的算法工程师职位 算法工程师 这里的算法工程师包括比较广泛 有做数据科学的 有做图形的 有做信号处理的 之后会统计更细分的领域 十大城市
  • 核酸预约地址查询结果查询小程序

    核酸检测报告结果查询 核酸检测 核酸检测预约 核酸 核酸检测查询 核酸检测报告 核酸检测结果 核酸检测地址导航 检测 核酸检测报告结果查询 核酸检测 核酸检测预约 核酸 核酸检测查询 核酸检测报告 核酸检测结果 核酸检测地址导航 检测 核酸
  • Go官方库RPC开发指南

    Go官方提供了一个RPC库 net rpc 包rpc提供了通过网络访问一个对象的方法的能力 服务器需要注册对象 通过对象的类型名暴露这个服务 注册后这个对象的输出方法就可以远程调用 这个库封装了底层传输的细节 包括序列化 服务器可以注册多个
  • 【多种优化算法比较】混沌引力搜索算法(CGSA)(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文献 1 概述 文献来源 自过去十年以来 启发式优化算法
  • 链表中环的入口结点--LeetCode第142题

    给一个链表 若其中包含环 请找出该链表的环的入口结点 否则 输出null 题解 快慢指针法 快指针一次走两步 慢指针一次走一步 当快慢指针第一次相遇 此时 2 x y n圈周长 x y 相遇以后快指针回到head和慢指针以同样速度每次走一步
  • 【springboot】yml的配置与获取数据:

    一 yml的配置 二 获取yml的配置数据
  • js工厂方法模式

    h1 给我一张名片 工厂方法模式 h1 p 工厂方法模式 Factory Method 通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例 p p 工厂方法模式本意是说将实际创建对象工作推迟到子类中 这样核心类就成了抽象类 Jav