软件设计模式之简单工厂模式
目录
一.类图(手机生产)
二.代码实现
Iphone类:
Vivo类:
Mobile类:
MobileFactory类:
Client类:
一.类图(手机生产)

补充:MobileFactory也可以直接指向抽象类Mobile
二.代码实现
Iphone类:
public class Iphone extends Mobile{public Iphone(){this.name = "iphone20";this.price = 3000;this.productAdd="上海";}@Overridepublic void show() {System.out.println("本手机由苹果公司设计,型号是"+this.name+",出厂价格为:"+this.price+";产地是"+this.productAdd);}
}
Vivo类:
public class Vivo extends Mobile{public Vivo(){this.name = "Vivo XX";this.price = 4500;this.productAdd="广州";}@Overridepublic void show() {System.out.println("本手机由Vivo公司设计,型号是"+this.name+",出厂价格为:"+this.price+";产地是"+this.productAdd);}
}
Mobile类:
public abstract class Mobile {public String name;public int price;public String productAdd;public void call(){System.out.println(this.name+"拨打电话。");}public abstract void show();
}
MobileFactory类:
public class MobileFactory {public static Mobile creatMobile(String mobileName){Mobile mobile = null;if("i".equals(mobileName) || "iphone".equals(mobileName)){mobile = new Iphone();}else if("v".equals(mobileName) || "vivo".equals(mobileName)){mobile = new Vivo();}return mobile;}
}
补充1:"i".equals(mobileName)最好不要写成mobileName.equals("i")
补充2:字符串的比较方法: .equals()
Client类:
public class Client {public static void main(String[] args){//显式创建,不建议//MobileFactory mf =new MobileFactory();//传入参数得到产品//添加static,直接调用静态工厂方法Mobile mobile = MobileFactory.creatMobile("vivo");// 3.使用产品mobile.show();mobile.call();// MobileFactory.creatMobile("vivo").show();}
}相关文章:
软件设计模式之简单工厂模式
目录 一.类图(手机生产) 二.代码实现 Iphone类: Vivo类: Mobile类: MobileFactory类: Client类: 一.类图(手机生产) 补充:MobileFactory也可以直接指向…...
内网激活JRebel插件(无网络环境)
1.官网下载安装包,JRebel and XRebel JRebel and XRebel - IntelliJ IDEs Plugin | Marketplace 2.以IInstall Plugin from Disk的方式读取 3.运行JrebelServer.jar 终端输入: java -jar JrebelServer.jar -p 8080 (默认8080端口)服务会自动打开浏览器至 http:/…...
LiveGBS流媒体平台GB/T28181常见问题-视频流安全控制HTTP接口鉴权勾选流地址鉴权后401Unauthorized如何播放调用接口流地址校验
LiveGBS流媒体平台GB/T28181常见问题频流安全控制HTTP接口鉴权勾选流地址鉴权后401Unauthorized如何播放调用接口流地址校验? 1、安全控制1.1、HTTP接口鉴权1.2、流地址鉴权 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.…...
Java 大视界 -- 区块链赋能 Java 大数据:数据可信与价值流转(84)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
接口自动化入门 —— Http的请求头,请求体,响应码解析!
在接口自动化测试中,HTTP请求头、请求体和响应码是核心组成部分。理解它们的作用、格式和解析方法对于进行有效的接口测试至关重要。以下是详细解析: 1. HTTP 请求头(Request Header) 1.1 作用 请求头是客户端向服务器发送的附加…...
upload-labs(1-20)详解(专业版)
目录 第1关 第2关 第3关 第4题 第5题 第6题 第7题 第8题 第9题 第10题 第11题 第12题 第13题 第1关 查看源码 在第一关是一个前端js的一个后缀识别:当不为jpg、png、gif时候出现弹窗 检查源码 将return checkFile() 改为 return ture 就可以将php顺利…...
Linux 生成静态库
文章目录 前提小知识生成和使用.a库操作步骤 在应用程序中,有一些公共的代码需要反复使用的,可以把这些代码制作成“库文件”;在链接的步骤中,可以让链接器在“库文件”提取到我们需要使用到的代码,复制到生成的可执行…...
ARMV8的64位指令
一、介绍 ARMv8 体系结构最大的改变是增加了一个新的 64 位的指令集,这是早前 ARM 指令集 的有益补充和增强。它可以处理 64 位宽的寄存器和数据并且使用 64 位的指针来访问内存。这 个新的指令集称为 A64 指令集,运行在 AArch64 状态。 ARMv8 兼容旧的…...
【git】 贮藏 stash
贮藏是我在sourcetree上看到的名词。之前只是浅浅的用来收藏一下修改的文件,没有完整的使用过。今天有幸使用了一次就来展开说说。 使用原因就不赘述了,错误的操作少提为好,操作步骤如下: 查看贮藏列表git stash list #输出&…...
ctf-web: php原生类利用 -- GHCTF Popppppp
源代码 <?php error_reporting(0); class CherryBlossom { public $fruit1; public $fruit2; public function __construct($a) {$this->fruit1 $a; } function __destruct() { echo $this->fruit1; } public function __toString() { $newFunc …...
PawSQL for TDSQL:腾讯云TDSQL数据库性能优化全攻略
TDSQL 作为腾讯云推出的分布式数据库,凭借其高扩展性、高可用性和高性能等优势,广泛应用于金融、互联网、政务等领域。随着业务的不断增长和数据量的爆炸式增长,如何优化 TDSQL 数据库的性能,成为众多企业和开发者面临的挑战。本文…...
202250311-WINDOWS本地4G显存Docker运行vLLM
前置: 需要去huggingface注册账号获取token:HUGGING_FACE_HUB_TOKEN 运行vLLM docker run --name LocalvLLM_qwen1.5B_Int4 --runtime nvidia --gpus all -v D:/vLLM/.cache/huggingface:/root/.cache/huggingface --env "HUGGING_FAC…...
Scala 中生成一个RDD的方法
在 Scala 中,生成 RDD(弹性分布式数据集)的主要方法是通过 SparkContext(或 SparkSession)提供的 API。以下是生成 RDD 的常见方法: 1. 从本地集合创建 RDD 使用 parallelize 方法将本地集合(如…...
T-SQL 语言基础:表运算符与联接
目录 介绍表运算符概述交叉联接内联接外联接联接实例总结引用 1. 介绍 在这篇博客中,主要涉及 T-SQL 中的表运算符与联接。联接操作是 SQL 查询中最常用的操作之一,它允许我们在多个表之间进行数据关联。通过了解不同类型的联接及其应用场景ÿ…...
Electron打包工具对比
在 Electron 生态中,打包工具的选择直接影响开发效率、配置复杂度和最终应用的性能。以下是主流的 Electron 打包工具及其优劣分析,结合你的 Vue 项目需求,我会在最后给出推荐方案: 一、主流 Electron 打包工具对比 1. Electron …...
jumpserver 网络安全 网络安全 authenticity
1.1 计算机安全的概念 1.1.1 计算机安全最核心的三个关键目标(CIA): 保密性(Confidentiality)--①数据保密性(确保隐私或秘密不向非授权者泄密或使用); ②隐私性(确保个人能够控制或确定其自身相关的信息)…...
Spring Cloud之远程调用OpenFeign参数传递
目录 OpenFeign参数传递 传递单个参数 传递多个参数 传递对象 传递JSON OpenFeign参数传递 传递单个参数 服务提供方product-service RequestMapping("/product") RestController public class ProductController {Autowiredprivate ProductService productSe…...
详解SQL权限与授予与收回对数据操作权限的操作
授予与收回对数据操作权限 一、GRANT 操作用法示例 二、REVOKE 操作用法示例 三、权限1. 数据库级别权限常见权限: 2. 对象级别权限作用对象:常见权限:对表或视图:对序列(Sequence):对存储过程和…...
网络安全之文件上传漏洞
一,文件上传漏洞的原因: 文件上传漏洞的存在主要是因为开发者未对用户上传的文件进行充分的安全验证,导致攻击者可以上传恶意文件(如 WebShell、恶意脚本等)到服务器,进而控制服务器或实施进一步攻击。 常…...
Fast DDS Security--仿问控制
Fast DDS中提供了两种级别的仿问控制: 1 Domain Governance: 定义域级别的安全策略(全局规则). 2 DomainParticipant Permissions : 定义参与者的具体权限(个体规则) 先说一下Domain Governance…...
【13】单片机编程核心技巧:乘法运算
【13】单片机编程核心技巧:乘法运算 七律 乘法 乘法运算寄存间,溢出玄机隐字边。 连乘自增简写妙,移位替代速如仙。 中间变量扩疆土,长整型存避险关。 单片机中精算术,毫厘不爽展奇观。 摘要 乘法运算是单片机编程…...
为什么大模型网站使用 SSE 而不是 WebSocket?
在大模型网站(如 ChatGPT、Claude、Gemini 等)中,前端通常使用 EventSource(Server-Sent Events, SSE) 来与后端对接,而不是 WebSocket。这是因为 SSE 更适合类似流式文本生成的场景。下面我们详细对比 SSE…...
PostgreSQL的备份方式
PostgreSQL 提供多种方式进行备份,适用于不同需求的场景。常用的备份方法如下: 1. 逻辑备份(pg_dump 和 pg_dumpall) 1.1 使用 pg_dump 备份单个数据库 pg_dump 是 PostgreSQL 内置的逻辑备份工具,可以将数据库导出为…...
iTextSharp-PDF批量导出
HTML转PDF批量导出速度太慢且使用Spire.pdf.dll限制页签10后需要开通会员才能使用-做出优化 环境:U9 - UI插件 需求:选择需要导出的客户查询对应对账数据批量导出PDF并弹出下载框保存到默认位置 using System; using System.Collections.Generic; us…...
基于Matlab设计GUI图像处理交互界面
Image-Processing-GUI 项目说明 本博文提供了完整的代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。 本项目是《Matlab实践》中图像处理软件题目,本项目实现的具体内容如下 基于Matlab设计GUI交互界面图像的…...
osg安装编译第三方,完整详细过程。 libtiff/tif config.vc.hdoes not exist
第三方安装包下载地址 GitHub - bjornblissing/osg-3rdparty-cmake: CMake scripts for building OpenSceneGraph third party libraries. 在计算机中的布局 D:\CPlus\osg\src\osg-3rdparty\osg-3rdparty-cmake三层布局,src 放置源码 执行里面的批处理文件&#…...
红队OPSEC(安全运营)个人总结
OPSEC又称:运营安全,是指在红队的视角下,蓝队对我方的威胁。 OPSEC漏洞的五个流程: 关键信息识别:指红队的关键信息不泄露,包括但不限于红队的攻击意图,能力,人员,活动及…...
RSA算法:开启现代密码学的数学之钥
一、RSA算法简介 RSA(Rivest-Shamir-Adleman)是当今应用最广泛的非对称加密算法,由三位科学家Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。它的核心思想是利用数论中的难题,构建一对数学上关联的密钥——公钥用于加密…...
【从0到1构建实时聊天系统:Spring Boot + Vue3 + WebSocket全栈实战】
一、项目架构 技术栈清单: 后端:Spring Boot 3.0 WebSocket STOMP前端:Vue3 Pinia WebSocket Client部署:Nginx Docker Compose 二、核心功能实现 1. WebSocket双向通信 // 后端配置类 Configuration EnableWebSocketMes…...
HTML 超链接(简单易懂较详细)
在 HTML 中,超链接是通过 <a> 标签(anchor tag)创建的。超链接允许用户通过点击文本、图像或其他元素跳转到另一个网页、文件或页面的特定部分。本文将详细介绍 HTML 超链接的语法、属性和应用场景。 一、基本语法 <a href"U…...
