设计模式——js/ts 实现简单工厂模式

js实现简单工厂模式

// 形状工厂
function ShapeFactory() {}// 添加创建圆形的方法
ShapeFactory.prototype.createCircle = function(radius) {return new Circle(radius);
};// 添加创建正方形的方法
ShapeFactory.prototype.createSquare = function(side) {return new Square(side);
};// 圆形类
function Circle(radius) {this.radius = radius;
}Circle.prototype.getArea = function() {return Math.PI * this.radius * this.radius;
};// 正方形类
function Square(side) {this.side = side;
}Square.prototype.getArea = function() {return this.side * this.side;
};// 使用简单工厂创建形状对象
const factory = new ShapeFactory();const myCircle = factory.createCircle(5);
console.log("圆形面积:", myCircle.getArea());const mySquare = factory.createSquare(4);
console.log("正方形面积:", mySquare.getArea());

ts实现简单工厂模式

// 形状接口
interface Shape {getArea(): number;
}// 圆形类
class Circle implements Shape {constructor(private radius: number) {}getArea(): number {return Math.PI * this.radius * this.radius;}
}// 正方形类
class Square implements Shape {constructor(private side: number) {}getArea(): number {return this.side * this.side;}
}// 形状工厂类
class ShapeFactory {createCircle(radius: number): Circle {return new Circle(radius);}createSquare(side: number): Square {return new Square(side);}
}// 使用简单工厂创建形状对象
const factory = new ShapeFactory();const myCircle = factory.createCircle(5);
console.log("圆形面积:", myCircle.getArea());const mySquare = factory.createSquare(4);
console.log("正方形面积:", mySquare.getArea());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 语言中并发的威力

发挥效率和响应能力 并发是现代软件开发中的一个基本概念,它使程序能够同时执行多个任务,提高效率和响应能力。在本文中,我们将探讨并发在现代软件开发中的重要性,并深入了解 Go 处理并发任务的独特方法。 在现代软件开发中并发…

基于Antd4 和React-hooks的项目开发

基于Antd4 和React-hooks的项目开发 https://github.com/dL-hx/react-cnode 项目依赖使用 react 16.13react-redux 7.xreact-router-dom 5.xredux 4.xantd 4axiosmoment 2.24 (日期格式化)qs 项目视图说明 首页主题详情用户列表用户详情关于 配置按需加载 https://3x.an…

Panoply查看nc文件的时间维

打开的是全球灌溉农田灌溉用水量遥感估算数据集(2011-2018),该文件以nc格式储存。nc格式文件就是一个多维的数据库。经纬度占了两维,可能还有时间维度,就是时空谱。 双击打开刚打开时只能看到2018年1月的灌溉数据 打…

软件测试真的看不到前途吗?

看到这个问题和问题后的说明,题主的显性问题就有两个: 1、软件测试有没有前途 2、若从事没有前途的测试,该怎么办(真的只能转行么)? 一、软件测试有没有前途? 先说结论:如果在2020年…

C++刷题 -- 字符串

C刷题 – 字符串 文章目录 C刷题 -- 字符串1.重复的子字符串 1.重复的子字符串 https://leetcode.cn/problems/repeated-substring-pattern/submissions/490209402/ 暴力解法 第一个for循环用来标定子串的末尾,根据末尾取出子串 第二个while循环用来检查原字符串是…

我在代码随想录|写代码Day6之 454.四数相加II ,三数之和

第一题: 454.四数相加II 题目 解答思路 我们要四数相加等于0一般的思路是暴力破解直接4个for循环,然后通过4个for循环得到答案, 但是这样的时间复杂度是O(n4),会超时然后我们通过将循环拆分,比如将 代码 第二题 : 题目: 代码 class Solution { public:vector<vector<…

后台管理项目多数据源管理方案实战

后台管理项目多数据源管理方案实战 整个权益商城后台本质上是一个访问频率比较低的CRUD管理系统&#xff0c;所以本身不需要考虑微服务拆分的事情。接入微服务体系也只是为了能够调用其他的微服务。 但是&#xff0c;在做电商管理项目时&#xff0c;我们为了简化业务流程&…

图书管理系统jsp + servlet+mysql

图书管理系统 项目使用jsp servletmysql实现&#xff1b; 登陆注册 首页 首页显示图书信息 图书管理 1添加书籍 2查询书籍 3预览书籍 4修改书籍 用户管理 1查询用户 2修改用户 3 删除用户 链接&#xff1a;https://pan.baidu.com/s/1QXK--ypb6OadbmKFlc0jUQ

【Deformable DETR】

最近学习CV中的Transformer有感而发,网上关于Deformable DETR通俗的帖子不是很多,因此想分享一下最近学习的内容。第一次发帖经验不足,文章内可能有许多错误或不恰之处欢迎批评指正。 Abstract DETR消除了目标检任务中的手工设计痕迹,但是存在收敛慢以及Transformer的自注…

Springboot整合kafka基本使用

项目搭建 同样的&#xff0c;需要我们搭建一个maven工程&#xff0c;整合非常的简单&#xff0c;需要用到: <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency>来一起看下完…

macOS系统下载百度网盘的操作流程

第一步 进入百度网盘的官网&#xff0c;链接&#xff1a;百度网盘-免费云盘丨文件共享软件丨超大容量丨存储安全​​​​​​​&#xff0c;选择“客户端下载” 第二步 根据自己的电脑配置选择版本进行下载。芯片的查看路径是系统设置-通用-关于本机 第三步 点击右上角的图标…

自监督学习综述

1.简介 其实自监督学习的核心思想很简单&#xff0c;利用大量的无标签数据训练模型&#xff0c;然后将其作为预训练模型在下游任务上进行微调&#xff08;有标签&#xff09;。在用无标签图像训练模型时主要通过设计辅助任务&#xff0c;用图像自身的信息作为标签训练。常见的…

linux存储管理

固态硬盘SSD SSD的优势 SSD采用电子存储介质进行数据存储和读取的一种技术&#xff0c;拥有极高的存储性能&#xff0c;被认为是存储技术发展的未来新星。 内存直接当成硬盘使用 与传统硬盘相比&#xff0c;SSD固态电子盘具有以下优点 第一&#xff0c;SSD完全的半导体化&…

什么是深度学习的无监督学习与有监督学习

无监督学习&#xff1a; 深度学习中的无监督学习方法是一种训练算法&#xff0c;它在没有标注输出的情况下从输入数据中学习模式和特征。这种方法的核心是探索和理解数据的内在结构和分布&#xff0c;而不是通过已知的输出来指导学习过程。无监督学习在深度学习领域有许多不同…

go语言函数二、init函数定义与作用

go语言init函数定义与作用 在go语言中&#xff0c;每一个源文件都可以包含一个init函数&#xff0c;这个函数会在main函数执行前&#xff0c;被go运行框架调用&#xff0c;注意是在main函数执行前。 package main import ("fmt" )func init() {fmt.Println("i…

实战案例:缓存不一致问题的解决(redis+本地缓存caffine)

一.问题引入 目前在写项目的时候&#xff0c;在B端查看文章&#xff0c;A端修改文章。为了增加效率&#xff0c;以及防止堆内存溢出&#xff0c;在B端选择本地缓存文章的方案。但是目前出现了A端对文章修改之后&#xff0c;B端读的还是旧数据&#xff0c;出现了缓存不一致的问…

阿赵UE学习笔记——2、新建项目和项目设置

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。继续来学习虚幻引擎的使用。这次介绍一下新建项目和项目设置。 一、新建项目 通过桌面快捷方式&#xff0c;或者EPIC Games Loader&#xff0c;启动虚幻引擎。 启动完成后&#xff0c;会打开项目管理的界面&#xff0c;可以看…

C++共享和保护——(5)编译预处理命令

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 耕耘者的汗水是哺育种子成长的乳汁&am…

Android 基础篇

Android 应用框架 Android 应用组件 对Android应用程序而言&#xff0c;应用组件主要由Activity、Service、Broadcast Receivers、Intent、Content Providers、AndroidManifest等构成。 Activity是与用户直接交互UI组件&#xff1b; Service是运行在后台、用户不可见的服务组…

超结MOS/低压MOS在5G基站电源上的应用-REASUNOS瑞森半导体

一、前言 5G基站是5G网络的核心设备&#xff0c;实现有线通信网络与无线终端之间的无线信号传输&#xff0c;5G基站主要分为宏基站和小基站。5G基站由于通信设备功耗大&#xff0c;采用由电源插座、交直流配电、防雷器、整流模块和监控模块组成的电气柜。所以顾名思义&#xf…