当前位置: 首页 > news >正文

设计模式-简单工厂模式

简单工厂模式又称为静态工厂模式,其实就是根据传入参数创建对应具体类的实例并返回实例对象,这些类通常继承至同一个父类,该模式专门定义了一个类来负责创建其他类的实例。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;//父类接口
public interface Animal
{void Eat();
}//猫子类
public class Cat : Animal
{public void Eat(){Debug.Log("猫");}
}//狗子类
public class Dog : Animal
{public void Eat(){Debug.Log("狗");}
}

 这就是工厂类,提供一个方法创建具体类的实例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Factory
{public static Animal CreatAnimal(string animal){Animal animalObj = null;switch (animal){case "cat":animalObj = new Cat();break;case "dog":animalObj = new Dog();break;}return animalObj;}
}

优点:将对象的创建于使用分离,创建完全交给工厂类来实现。

缺点:违反了开闭原则(即对修改关闭,对拓展开放),当有新的具体类需要创建时都需要修改工厂类中的创建方法,多增加判断。 

相关文章:

设计模式-简单工厂模式

简单工厂模式又称为静态工厂模式,其实就是根据传入参数创建对应具体类的实例并返回实例对象,这些类通常继承至同一个父类,该模式专门定义了一个类来负责创建其他类的实例。 using System.Collections; using System.Collections.Generic; us…...

Maven框架SpringBootWeb简单入门

一、Maven ★ Maven:是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 官网:https://maven.apache.org/ ★ Maven的作用: 1. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题。 2. 统一项目结构:提供标准、统一的项目结构。 …...

关于2023年8月19日PMP认证考试准考信下载通知

各位考生: 为保证参加2023年8月19日PMI项目管理资格认证考试的每位考生都能顺利进入考场参加考试,请完整阅读本通知内容。 一、关于准考信下载 为确保您顺利进入考场参加8月份考试,请及时登录本网站(https://event.chinapmp.cn/&#xff09…...

html实现iphone同款开关

一、背景 想实现一个开关的按钮&#xff0c;来触发一些操作&#xff0c;网上找了总感觉看着别扭&#xff0c;忽然想到iphone的开关挺好&#xff0c;搞一个 二、代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&qu…...

使用Vue和jsmind如何实现思维导图的历史版本控制和撤销/重做功能?

思维导图是一种流行的知识图谱工具&#xff0c;可以帮助我们更好地组织和理解复杂的思维关系。在开发基于Vue的思维导图应用时&#xff0c;实现历史版本控制和撤销/重做功能是非常有用的。以下为您介绍如何使用Vue和jsmind插件来实现这些功能。 安装依赖 首先&#xff0c;我们…...

【Vue-Router】路由元信息

路由元信息&#xff08;Route Meta Information&#xff09;是在路由配置中为每个路由定义的一组自定义数据。这些数据可以包含任何你希望在路由中传递和使用的信息&#xff0c;比如权限、页面标题、布局设置等。Vue Router 允许你在路由配置中定义元信息&#xff0c;然后在组件…...

vue 控件的四个角设置 父视图position:relative

父视图relative&#xff0c;子视图 absolute <div class"bg1"> <i class"topL"></i> <i class"topR"></i> <i class"bottomL"></i> <i class"bottomR"></i> <di…...

VM中linux虚拟机配置桥接模式(虚拟机与宿主机网络互通)

VM虚拟机配置桥接模式&#xff0c;可以让虚拟机和物理主机一样存在于局域网中&#xff0c;可以和主机相通&#xff0c;和互联网相通&#xff0c;和局域网中其它主机相通。 vmware为我们提供了三种网络工作模式&#xff0c;它们分别是&#xff1a;Bridged&#xff08;桥接模式&…...

7.Eclipse中改变编码方式及解决部分乱码问题

1、改变整个工作空间的编码方式&#xff1a; 点击Window->Preference->General->workplace&#xff0c;然后选择默认编码方式 2、改变某个项目的编码方式&#xff1a; 右键点击项目名->Properties>Resource&#xff0c;然后选择默认编码方式。 问题&#xff…...

grafana 的 ws websocket 连接不上的解决方式

使用了多层的代理方式&#xff0c;一层没有此问题 错误 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志报错 msg“Request Completed” methodGET path/api/live/ws status403 解决方式 # allowed_origins is a comma-separated list of o…...

多环境_部署项目

多环境&#xff1a; 指同一套项目代码在不同的阶段需要根据实际情况来调整配置并且部署到不同的机器上。 为什么需要&#xff1f; 1. 每个环境互不影响 2. 区分不同的阶段&#xff1a;开发 / 测试 / 生产 3. 对项目进行优化&#xff1a; 1. 本地日志级别 2. 精简依赖&a…...

go web框架 gin-gonic源码解读02————router

go web框架 gin-gonic源码解读02————router 本来想先写context&#xff0c;但是发现context能简单讲讲的东西不多&#xff0c;就准备直接和router合在一起讲好了 router是web服务的路由&#xff0c;是指讲来自客户端的http请求与服务器端的处理逻辑或者资源相映射的机制。&…...

【Java后端封装数据】常见后端封装数据的格式,用于返回给前端使用(109)

数据格式一&#xff1a;包装 List Map 返回&#xff0c;常用于数据展示&#xff1b; // Controller&#xff1a;public Result selectRegConfig(RequestBody String param) {try {Map<String, Object> paramMap JsonUtils.readValue(param, Map.class);return Result.su…...

无脑入门pytorch系列(三)—— nn.Linear

本系列教程适用于没有任何pytorch的同学&#xff08;简单的python语法还是要的&#xff09;&#xff0c;从代码的表层出发挖掘代码的深层含义&#xff0c;理解具体的意思和内涵。pytorch的很多函数看着非常简单&#xff0c;但是其中包含了很多内容&#xff0c;不了解其中的意思…...

SQL Server用sql语句添加列,添加列注释

SQL Server用sql语句添加列&#xff0c;添加列注释 微软文档&#xff1a; https://learn.microsoft.com/zh-cn/sql/relational-databases/tables/add-columns-to-a-table-database-engine?viewsql-server-ver15 alter table article add RedirectURL varchar(600) nu…...

springBoot中service层查询使用多线程CompletableFuture(有返回值)

重点&#xff1a; 1. 创建线程池 Executor executor Executors.newCachedThreadPool();//保存线程List<CompletableFuture<Void>> futures new ArrayList<>();2.使用 //这里可以是多个看下面代码是在for中使用的 CompletableFuture<Void> future …...

畜牧虚拟仿真 | 鱼授精过程VR模拟演练系统

随着科技的发展&#xff0c;虚拟现实(VR)技术逐渐渗透到各个领域&#xff0c;为人们提供了更加真实、直观的体验。在动物养殖教育领域&#xff0c;鱼授精过程VR模拟演练系统正成为一种新的教学手段&#xff0c;它能够帮助人们更好地理解和掌握鱼授精的操作技巧&#xff0c;从而…...

第一百一十四回 局部动态列表

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了dart语言中的 setter/getter相关的内容&#xff0c;本章回中将介绍 局部动态列表.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 在正常情况下列表位于整个页面中&#xff0c;而且可以在整个页面中滚动…...

多尺度目标检测【动手学深度学习】

在上篇博客《锚框【目标检测】》中,我们以输入图像的每个像素为中心,生成多个锚框。基本而言,这些锚框代表了图像不同区域的样本。然而如果以每个像素都生成的锚框,最后可能会得到太多需要计算的锚框。想象一个561728的输入图像,如果以每个像素为中心生成五个形状不同的锚…...

elasticsearch 基础

ES 搜索技术历史 今天看的是《Elasticsearch实战与原理解析》 第一章 搜索技术发展史 1、搜索技术发展史 宏观而言&#xff0c;搜索引擎的发展经历了五个尖端和两大分类。五个阶段分别是ftp文件检索阶段、分类目录阶段、文本相关性检索阶段、网页链接分析阶段和用户意图识别…...

Java医疗系统通过等保三级测评前,这8个高危漏洞必须在72小时内闭环(附OWASP Top 10映射清单)

第一章&#xff1a;医疗Java系统等保三级合规性基线与高危漏洞判定标准在医疗行业&#xff0c;Java系统承载着电子病历、HIS、LIS、PACS等核心业务&#xff0c;其安全合规性直接关系患者隐私与公共健康。等保三级要求系统具备完善的身份鉴别、访问控制、安全审计、入侵防范及可…...

Qwen3-TTS-1.7B惊艳案例:带背景音乐的语音合成抗干扰能力实测

Qwen3-TTS-1.7B惊艳案例&#xff1a;带背景音乐的语音合成抗干扰能力实测 1. 引言&#xff1a;当AI语音合成遇上背景音乐 想象一下这个场景&#xff1a;你正在制作一个短视频&#xff0c;需要给画面配上解说。你找到了一段完美的背景音乐&#xff0c;但当你尝试录制旁白时&am…...

MogFace模型Python入门实战:调用API完成第一个人脸检测程序

MogFace模型Python入门实战&#xff1a;调用API完成第一个人脸检测程序 你是不是也对AI人脸检测感到好奇&#xff0c;想亲手写个程序试试&#xff1f;今天&#xff0c;我们就来一起动手&#xff0c;用Python写一个最简单的程序&#xff0c;调用MogFace模型来检测图片里的人脸。…...

不止于部署:用Docker和Helm在K8s上玩转JFrog Artifactory + Xray安全扫描全家桶

云原生时代的DevSecOps实践&#xff1a;基于Docker与Helm的JFrog全家桶深度集成指南 当微服务架构成为企业数字化转型的标配&#xff0c;如何高效管理海量制品并确保其安全性&#xff0c;已成为每个技术团队必须面对的挑战。传统单机部署模式在弹性扩展、灾备能力等方面的局限性…...

Windows系统OpenClaw避坑指南:nanobot镜像部署常见报错解决

Windows系统OpenClaw避坑指南&#xff1a;nanobot镜像部署常见报错解决 1. 为什么选择nanobot镜像部署OpenClaw 去年我在尝试将OpenClaw接入本地大模型时&#xff0c;被复杂的依赖关系和GPU配置折磨得够呛。直到发现星图平台的nanobot镜像——这个预装了Qwen3-4B-Instruct模型…...

前端测试:别让你的代码在上线后崩溃

前端测试&#xff1a;别让你的代码在上线后崩溃 毒舌时刻这代码写得跟定时炸弹似的&#xff0c;不知道什么时候就炸了。各位前端同行&#xff0c;咱们今天聊聊前端测试。别告诉我你还在手动测试&#xff0c;那感觉就像在没有安全网的情况下走钢丝——能走&#xff0c;但随时可能…...

YOLOv8训练自己的道路裂缝数据集,从数据标注到模型部署的保姆级避坑指南

YOLOv8道路裂缝检测实战&#xff1a;从数据标注到模型部署的全流程避坑指南 道路养护工程师小张最近遇到了头疼的问题——每天需要人工巡检数十公里道路&#xff0c;用粉笔标记裂缝位置再拍照记录。这种传统方式效率低下且容易遗漏细微裂缝。直到他发现了YOLOv8这个目标检测利器…...

国产MCU AT32F403A替代STM32F103实现USB虚拟串口通信的实战指南

1. 为什么选择AT32F403A替代STM32F103&#xff1f; 最近两年芯片市场的变化&#xff0c;让很多工程师开始关注国产MCU的替代方案。我在实际项目中测试过AT32F403A这款芯片&#xff0c;发现它不仅能完美兼容STM32F103的USB虚拟串口功能&#xff0c;还在性能和价格上更有优势。对…...

threejs 加载glb模型时DRACOLoader的正确配置与常见错误解析

1. 为什么需要DRACOLoader&#xff1f; 在Three.js中加载glb/gltf模型时&#xff0c;经常会遇到模型文件过大的问题。这是因为很多3D建模工具&#xff08;如Blender&#xff09;在导出时会使用Draco压缩算法来减小文件体积。这种压缩虽然能显著减少模型大小&#xff08;通常能…...

新手必看!用Python+OpenCV实现简易版视觉里程计(附车道线检测代码)

PythonOpenCV实战&#xff1a;从车道线检测到简易视觉里程计 在自动驾驶和机器人导航领域&#xff0c;视觉里程计(VO)是一项基础而关键的技术。它像是一双"数字眼睛"&#xff0c;通过分析连续图像帧之间的变化来估算设备的运动轨迹。想象一下&#xff0c;当你闭着眼…...