设计模式-创建型模式-工厂模式

 工厂模式是一种用来创建对象的模式,它将对象的创建和使用分离开来,使得代码更加灵活和可扩展。

下面代码中CarFactory是一个工厂类,它根据传入的参数来创建不同类型的Car对象。通过工厂模式,在不改变客户端代码的情况下轻松地添加新的品牌汽车。

/**
 * 创建型模式--工厂模式
 * 工厂模式是一种用来创建对象的模式,它将对象的创建和使用分离开来,使得代码更加灵活和可扩展
 *
 * 使用工厂模式来创建汽车
 */
public class FactoryMode {

    // 抽象产品类
    abstract static class Car {
        public abstract void drive();
    }

    // 具体产品类
    static class BenzCar extends Car {
        @Override
        public void drive() {
            System.out.println("Drive Benz Car");
        }
    }

    static class BmwCar extends Car {
        @Override
        public void drive() {
            System.out.println("Drive Bmw Car");
        }
    }

    // 工厂类
    // CarFactory是一个工厂类,它根据传入的参数来创建不同类型的Car对象。通过工厂模式,在不改变客户端代码的情况下轻松地添加新的品牌汽车。
    static class CarFactory {
        public static Car createCar(String type) {
            if ("Benz".equalsIgnoreCase(type)) {
                return new BenzCar();
            } else if ("Bmw".equalsIgnoreCase(type)) {
                return new BmwCar();
            } else {
                throw new IllegalArgumentException("Invalid car type");
            }
        }
    }

    // 使用工厂模式创建汽车
    public static void main(String[] args) {

        Car benzCar = CarFactory.createCar("Benz");
        Car bmwCar = CarFactory.createCar("Bmw");
        benzCar.drive();
        bmwCar.drive();
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python系列】受保护属性

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

RAG原理及本地化实践

基于LLM的应用在问题回答、信息获取上发挥出了巨大作用。这些通用大模型训练的数据主要来源于互联网上的会话或者个别机构提供的数据,虽然能够提供类似人的交互对答,但是在针对某个特定领域的时候就显得不足。通用大模型在应用中主要有以下问题&#xff…

【DINO】环境配置

1. DINO简介 作为一款基于Transformer性能强劲的计算机视觉算法,一经发布即受追捧,本文记录下在DINO官方代码在集群上的环境配置及训练自己的数据集过程。 DINO原文:https://arxiv.org/abs/2203.03605 DINO源代码:https://github.…

ssm084基于ssm的大型商场会员管理系统+jsp

大型商场会员管理系统的设计与实现 摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编…

【C语言必刷题】7. 百钱百鸡

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

《汇编语言》- 读书笔记 - 综合研究

《汇编语言》- 读书笔记 - 综合研究 研究试验 1 搭建一个精简的 C 语言开发环境1. 下载2. 配置3. 编译4. 连接 研究试验 2 使用寄存器1. 编一个程序 ur1.c ( tcc 用法)tcc 编译连接多个源文件tlink 手动连接 2.用 Debug 加载 ur1.exe,用u命令…

数据转换 | Matlab基于RP递归图一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 Matlab基于RP递归图一维数据转二维图像方法 基于RP(Recurrence Plot)递归图的方法可以将一维数据转换为二维图像,以可视化数据的动态特征。RP递归图是一种表示时间序列相…

android 去除桌面谷歌搜索框

注: 本文只是博主学习记录分享,仅供参考。如有错误请指出来,谢谢! 一、问题描述 去除 android 系统桌面谷歌搜索栏,前后对比如下图: 系统版本:android12 平台:rk3568 二、…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 (哈希表记录链表的访问):思路二 (双指针,快指针在前,慢指针在后): 我的代码运行结果 前言 前几天我写的代码,都是把所有的内容写在main函数里&…

Veeam配置备份oracle实例

Veeam是一家专门提供数据管理和数据保护解决方案的软件公司。他们的产品主要包括备份、复制和虚拟化管理等功能,旨在帮助企业保护其数据、应用程序和系统;NBU,COMMVALT,Veeam 国际三大知名备份软件厂商。本文介绍使用Veaam 备份Li…

【nodejs状态库mobx之computed规则】

The above example nicely demonstrates the benefits of a computed value, it acts as a caching point. Even though we change the amount, and this will trigger the total to recompute, it won’t trigger the autorun, as total will detect its output hasn’t been …

行人属性AI识别/人体结构化属性AI识别算法的原理及应用场景介绍

行人属性AI识别技术是一种基于人工智能技术的图像识别技术,通过对行人的图像或视频进行处理和分析,提取出其中的结构化信息,如人体姿态、关键点位置、行人属性(性别、年龄、服装等)等。 行人结构化数据分析的方法包括…

LORA详解

第一章、lora论文解析 参考论文: low rank adaption of llm 背景介绍: 自然语言处理的一个重要范式包括对一般领域数据的大规模预训练和对特定任务或领域的适应处理。在自然语言处理中的许多应用依赖于将一个大规模的预训练语言模型适配到多个下游应用…

小程序变更主体还要重新备案吗?

小程序迁移变更主体有什么作用?小程序迁移变更主体的作用可不止变更主体这一个哦!还可以解决一些历史遗留问题,比如小程序申请时主体不准确,或者主体发生合并、分立或业务调整等情况。这样一来,账号在认证或年审时就不…

五一~感恩回馈,SolidKits工具折扣来袭!

SOLIDWORKS插件多样且丰富,有着不同的种类和用途,可以为SOLIDWORKS软件本身提升使用效率,更快速的响应你的操作方式。SolidKits自主设计研发多款SOLIDWORKS增效插件,包括:自动化参数设计插件、高级BOM插件、批量编码器…

【leetcode面试经典150题】75. 二叉树展开为链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

Weblogic JMS

简介 全称:WebLogic Server的Java Messaging Service(JMS) WebLogic JMS 是与 WebLogic Server 平台紧密集成的企业级消息传递系统。 Java Message Service (JMS) API 是一种消息传递标准,允许基于 Java Platform Enterprise Edition (Java EE) 的应用程序组件创建、发送、…

基于STC12C5A60S2系列1T 8051单片机正常模式或移位模式控制数码管某位闪烁后单击长按增加或减少数值应用

基于STC12C5A60S2系列1T 8051单片机正常模式或移位模式控制数码管某位闪烁后单击长按增加或减少数值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍基于STC12C5A6…

MySQL Workbench 数据库常用操作

大家好哦,我是程序员徐师兄,今天为大家打来的是MySQL Workbench 数据库常用操作。 文章目录 一、连接数据库二、进入数据库三、创建数据库四、设置默认数据库五、创建数据表六、查看表数据七、查看数据表 一、连接数据库 二、进入数据库 三、创建数据库 …

【Leetcode】vector刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.只出现一次的数字2.杨辉三角3.删除有序数组中的重复项4.只出现一次的数字II5.只出现一次的数字III6.电话号码的字母组合 1.只出现一次的数字 题目链接:136.只出现一…
最新文章