套路学习:模块化编程+简单工厂模式

仿真学习系列(三十八):Sigrity仿真之单端S参数提取 S 参数(Scattering Parameters)是高速信号分析中最基础也最常用的指标,能够全面表征走线、过孔、连接器等互连结构的高频行为。在 Sigrity PowerSI 中,Model Extraction 是最常用的 S 参数提取方式,适用于高速差分线、单端线、过孔、参考平面等各种拓扑结构。 本节将通过示例讲解如何在 PowerSI 中完成一次完整的 S 参数提取流程,包括:对象选择、端口设置、频率范围配置以及结果查看。掌握此方法后,即可对任意高速网络执行阻抗、插损、回损、串扰分析,为进一步的 阅读详情

通过babel+nodejs+es2015学习了『模块化编程』的一个基础。
其实在javascript中也有设计模式。

我们来设计一个订单模块

订单号、下单人ID、订单商品数量、下单时间、子订单对象(一对多):商品ID、商品价格、商品数量

Orders.js

// 主订单
const MainOrder = {
    OrderNo:"",
    OrderUser:0,
    OrderTime:"",
    OrderDetail:[]
}

// 子订单
const DetailOrder = {
    ProdID:0,
    ProdNum:0,
    ProdPrice:0.00
}

// 最后导出这2个对象
export {MainOrder,DetailOrder}

如果我们要在入口文件index.js里使用上面定义的Orders模块:

import {MainOrder,DetailOrder} from "./Orders"

我们今天并不打算这样写,我们希望能在我们的业务模块中适当的加入一些设计模式,方便后面的扩展。

简单工厂模式

我们换一种导出模块的方式

// 主订单
const MainOrder = {
    OrderNo:"",
    OrderUser:0,
    OrderTime:"",
    OrderDetail:[]
}

// 子订单
const DetailOrder = {
    ProdID:0,
    ProdNum:0,
    ProdPrice:0.00
}


export default { // 简单工厂模式

    create(name){ // 创建一个实体类
        if (name == "main"){
            return MainOrder;
        }else if (name == "detail"){
            return DetailOrder;
        }
    }

}

然后我们在入口文件index.js里就可以这样来创建实体:

import OrderFactory from "./Orders"; // 引入

var mainOrder = OrderFactory.create("main"); // 创建主订单实体

console.log(mainOrder.OrderUser); // 打印下单人

我们测试一下

cd 到项目根目录
npm run b #b是package.json里配置的script

终端输出:

> js-demo@1.0.0 b /Applications/MAMP/htdocs/js-demo
> babel-node index.js

0

成功打印出MainOrder对象里的OrderUser属性值:0
这里写图片描述

利用工厂模式的优势

利用工厂模式,我们可以在初始化的时候传入更多的参数。
Orders.js:

// 主订单
const MainOrder = {
    OrderNo:"0000",
    OrderUser:0,
    ProdsNum:0,
    OrderTime:"",
    OrderDetail:[]
}

// 子订单
const DetailOrder = {
    ProdID:0,
    ProdNum:0,
    ProdPrice:0.00
}


export default { // 简单工厂模式

    create(name,OrderNo,OrderUser,ProdsNum){ // 创建一个实体类
        if (name == "main"){
            MainOrder.OrderNo = OrderNo;
            MainOrder.OrderUser = OrderUser;
            MainOrder.ProdsNum = ProdsNum;

            return MainOrder;
        }else if (name == "detail"){
            return DetailOrder;
        }
    }

}

使用的时候:

OrderFactory.create("main","001","1900",100); 

我们不是使用上面的方式,还可以使用es 2015的『延展操作符』
index.js:

import OrderFactory from "./Orders"; // 引入

var initData = ["001","1900",100]; // 
// 创建主订单实体
var mainOrder = OrderFactory.create("main",...initData);  // "..."延展操作符

console.log(mainOrder.OrderUser); // 打印下单人
// 打印结果是:1900
YOLOv11改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet 本文记录的是基于VanillaNet的YOLOv11轻量化改进方法研究。VanillaNet的极简主义在于无 shortcut 连接,并且在网络的每个阶段仅使用一层卷积,无额外复杂模块,仅通过自身简洁的架构设计和训练策略,实现有效地训练和优化。本文在替换骨干网络中配置了原论文中的、和11种模型,以满足不同的需求。 阅读详情

相关推荐

基于CRU和WorldClim的高分辨率(1km)气候数据生成

基于CRU和WorldClim的高分辨率(1km)气候数据生成

lhq7842955的博客 1691

模块化编程

模块化编程 Nixie LED1602

m0_55274145的博客 1476

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1333

四、模块化编程

本视频使用的是提供的LCD1602代码,属于模块化的代码,使用者只需要知道所提供函数的作用和使用方法就可以很容易的使用LCD1602。使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)文件里,在.h文件里提供外部可调用函数的声明,其它。

qq_43258123的博客 2042

UE5与Cesium for Unreal结合:打造高效离线地图解决方案

本文详细介绍了如何利用UE5与Cesium for Unreal结合打造高效离线地图解决方案,特别适用于数字孪生、军事仿真等网络不稳定场景。通过优化配置、数据处理和性能调优,实现TB级地形数据的流畅渲染,并结合实战案例展示了在油田巡检等复杂环境中的应用效果。

weixin_29007135的博客 493

Apache-Plc4x-Modbus-Tcp学习记录(一)

Apache-Plc4x-Modbus-Tcp学习记录(一)

weixin_45325423的博客 6985

【C语言】模块化编程-通俗易懂

1什么是模块化 模块化编程就是把我们的一整个项目,分成很多模块(比如一个学生成绩查询可以分为,登陆,查询,修改保存,退出等模块) 而一个程序工程包含多个源文件(.c 文件和 .h 文件),每个 .c 文件可以被称为一个模块,每一个模块都有其各自的功能,而每一个.h文件则是声明该模块,相当于功能说明书 模块化编程在嵌入式中为必须要掌握的技能 2为啥要用模块化 有的同学会想,我一个main...

Z小旋 4万+

CNN经典论文(一)LeNet

Gradient-Based Learning Applied to Document Recognition(梯度学习在文档识别中的应用) Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner 发表时间:December 1998 期刊:Proceedings of the IEEE 影响:世界上第一个卷积神经网络 论文地址:Gradient-Based Learning Applied to Document Recognition

loveling丶的博客 3597

53.模块化编程

53.模块化编程

LingLinTianShang的博客 5498

卡诺图化简法注意事项+竞争冒险知识点总结

今天反思以下卡诺图化简法中的注意事项。 卡诺图看起来简单,但如果不熟悉的话很容易出错,因此要对画圈的规则比较熟悉。

weixin_42415266的博客 1万+

基于C#开发ABB机器人上位机系统:从操作控制到数据交互的全方位实现

ABB工业机器人是世界领先的自动化设备之一,广泛应用于焊接、装配、搬运、喷涂、包装等多个行业。机器人控制器:用于控制机器人运动、路径规划、状态监控等。上位机系统:提供人机交互界面,允许操作员与机器人进行交互,实现实时控制、参数调整和数据分析。上位机系统通过与机器人控制器通信,采集机器人状态数据,发送控制指令,实现远程监控和控制操作。通过高效的操作界面和数据交互,可以大大提高机器人的工作效率和系统的可维护性。基于C#开发ABB机器人上位机系统,能够实现高效的机器人控制与实时数据交互。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1177

C++设计模式总结-汇总了全部23种设计模式的详细说明

C++设计模式总结-汇总了全部23种设计模式的详细说明

qianniulaoren的博客 1304

Nmap源码分析(端口扫描)

端口扫描是Nmap的核心功能,用于确定目标机的端口状态(开放、关闭、过滤等),也为Nmap的服务与版本扫描、OS扫描、脚本扫描提供基本的指引信息。所以,深入理解端口扫描的实现对分析其他的扫描方式很有帮助。 1简单回顾   首先简要回顾一下端口扫描的原理以及命令行选项。 1.1扫描原理   Nmap提供的10多种类型的端口扫描方法,如TCP SYN/ACK/FIN/Xmas/NULL/ Windows/Connect,FTP Bounce, Idle scan, UDP port u...

墨痕诉清风的博客 1596

LINUX-模块化编程

系列文章目录 文章目录系列文章目录一、模块化概念二、单模块编程1.概念2.模块加载函数3.模块卸载函数4.模块的开源许可和声明5.例子三、模块传参四、多模块编程总结 一、模块化概念 c语言 按照功能将一个.c文件拆分为多个.c以及.h文件 stm32 对应每一个外设都有一个.c和.h文件,.c文件写模块的初始化以及功能函数,.h文件对应函数的声明,如果想使用该外设只需包含其头文件即可。 Linux Linux 内核整体结构已经很庞大,包含了很多的组件,而对于我们工程师而言,有两种方

小阳先生 2299

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

真正的模块化编程原来是这样的!

真正的模块化,并不是简单文本意义上的,而是与逻辑相关的有逻辑意义的。一个模块应该像一个集成电路芯片,我们能见到能使用的都很清晰,它定义了良好的输入和输出。模块是可能分开地被编写的单位。这使他们可再用和允许广泛人员同时协作、编写及研究不同的模块。实际上,编程语言已经为我们提供了一种很好的模块化方法,它的名字叫做函数。每一个函数都有明确的输入(参数)和输出(返回值),同一个文件里可以包含多个函数,所以你其实根本不需要把代码分开在多个文件或者目录里面,同样可以完成代码的模块化。

qq_41854911的博客 1149

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

什么是模块化编程

模块化帮助开发者将复杂系统分解成更小、更易于管理的部分。封装性确保模块内部实现的隐藏,减少了模块间的依赖。接口作为模块之间通信的桥梁,应当简洁明了。重用性和可替换性增加了代码的灵活性和项目的可维护性。模块化允许独立和并行的开发与测试,提高开发效率。

sinat_41883985的博客 681

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

史上最强的C语言模块化编程指南

模块化编程是提高代码质量和可维护性的关键。通过将程序分解成独立的模块,我们可以更好地管理和优化代码。希望本指南能够帮助你在C语言项目中更好地实现模块化编程。随着项目的复杂度增加,模块化编程的优势将越来越明显。不断实践和完善你的模块化设计,会使你的代码更加健壮和易于维护。

极客代码 2786

11 模块化编程

Python基础知识!

Emily的博客 349

webpack与模块化

目录 1.模块化 2.模块化的核心 3.ESM 3.1独立模块作用域 3.2导出模块内部数据 3.3导入外部模块数据 3.3.1静态导入 3.3.2ESM导入导出——示例: 3.3.3动态导入import() 4.模块化的向下兼容 5.CommonJS 5.1独立模块作用域 5.2导出模块内部数据 5.3导入外部模块数据 5.4CommonJS规范使用示例 6....

黎小小的博客 473

模块化编程(C语言)

目录1.什么是模块化编程2.模块化编程的好处3.模块化开发过程如下4.模块化的具体代码实现 1.什么是模块化编程 模块化编程就是我们一个复杂的项目分成很多模块,比如一个单片机项目,就可能分为:主函数模块,液晶显示和数码管显示模块,时间延时模块,温度传感器模块等。 而一个程序工程包含多个源文件(.c 文件和 .h 文件),每个 .c 文件可以被称为一个模块,每一个模块都有其各自的功能,而每一个.h文件则是声明该模块,相当于功能说明书 模块化编程在嵌入式中是必须要掌握的技能。 2.模块化编程的好处 开发C程

weixin_48678164的博客 4642

模块化程序设计、条件编译、模块化程序设计与多文件编程实例、自顶向下、逐步求精、模块分解的基本原则

变量声明与变量定义不同的是:对于变量声明,编译器并不对其分配内存,因为这个变量实际是在其他模块定义的,即希望这个变量的内存是在其他模块分配的,用extern 声明表示要使用在其他模块定义的变量。按照模块化程序设计的思想,无论多么复杂的任务,都可以划分为若干个子任务。模块化程序设计的好处是,可以先将模块各个击破,最后再将他们集成在一起完成总任务,这样不仅便于进行单个模块的设计、开发、调试、测试和维护等工作,而且还可以使得开发人员能够团队合作,按模块分配和完成任务,实现并行开发,有利于缩短软件开发的周期。

ww1425408527的博客 2305

单片机模块化编程简析

模块化编程是一种软件设计技术,它强调将程序的功能划分为独立、可互换的模块,每个模块都包含执行所需功能的一个方面所必需的一切。模块接口表达了该模块所提供和所需要的元素,而这些在接口中定义的元素可以被其他模块检测到。模块化编程与结构化程序设计和面向对象程序设计密切相关,它们的目标都是通过分解成较小的部分来促进大型软件程序和系统的构建。模块化编程的发展可以追溯到1960年代,而随着软件系统的不断发展,尤其是前端网站和应用的功能日益复杂,Javascript代码量的不断增加,模块化编程变得越来越重要。

card45的博客 2324
上一篇: 混合APP开发的套路(三): android和javascript初步交互(js调安卓)
下一篇: 混合APP开发的套路(四):在html页面中打开项目中的Activity
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值