手写Java设计模式之工厂模式,附源码解读

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。

工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。

以汽车生产为例,我们在生产汽车的时候,找到汽车加工厂,我们只需要给对方品牌信息,然后对方就可以生产出不同品牌的汽车,而不需要关注加工过程。

具体代码如下:

首先创建汽车的生产接口:

public interface Car {
     void draw();
}

其次,分别让不同品牌实现汽车生产接口,后续如果需要增加新的品牌,仅需增加实现类即可,代码如下:

public class XiaoMi implements Car {
    @Override
    public void draw() {
        System.out.println("生产小米汽车");
    }
}

public class Tesla implements Car {
    @Override
    public void draw() {
        System.out.println("生产特斯拉");
    }
}

public class HuaWei implements Car {
    @Override
    public void draw() {
        System.out.println("生产问界汽车");
    }
}

增加一个汽车工厂,按照不同品牌生产汽车:

public class CarFactory {
    
    public Car getCar(String CarType){
        if(CarType == null){
            return null;
        }
        if(CarType.equalsIgnoreCase("XiaoMi")){
            return new XiaoMi();
        } else if(CarType.equalsIgnoreCase("HuaWei")){
            return new HuaWei();
        } else if(CarType.equalsIgnoreCase("Tesla")){
            return new Tesla();
        }
        return null;
    }
}

最后,实现调用(生产):

public class CarTest {
    public static void main(String[] args){
        CarFactory carFactory = new CarFactory();
        carFactory.getCar("xiaomi").draw();
        carFactory.getCar("huawei").draw();
        carFactory.getCar("tesla").draw();
    }
}

生成结果:

在这里插入图片描述

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

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

相关文章

智慧园区引领产业智能化升级:科技创新驱动打造智慧化、高效化产业新未来

随着全球科技革命的深入推进,以大数据、云计算、物联网、人工智能等为代表的新一代信息技术正深刻改变着传统产业的发展模式。在这一背景下,智慧园区作为产业智能化升级的重要载体和平台,正以其前瞻性的规划、创新的科技和卓越的实践&#xf…

桥接模式【结构型模式C++】

1.概述 桥接模式是一种结构型设计模式,是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口&am…

完整、免费的把pdf转word文档

在线工具网 https://www.orcc.online/pdf 支持pdf转word,免费、完整、快捷 登录网站 https://orcc.online/pdf 选择需要转换的pdf文件: 等待转换完成 点击蓝色文件即可下载 无限制,完整转换。

C语言-浮点数在内存中的存储

目录 C语言-浮点数在内存中的存储 练习 浮点数的存储 浮点数存的过程 浮点数在内存的存储 浮点数取的过程 C语言-浮点数在内存中的存储 常见的浮点数:3.14149、1E10(科学计数法表示形式:1.0*10^10)等,浮点数家族…

数据赋能(62)——要求:数据管理部门能力

“要求:数据管理部门能力”是作为标准的参考内容编写的。 在实施数据赋能中,数据管理部门的能力体现在多个方面,关键能力如下图所示。 在实施数据赋能的过程中,数据管理部门应具备的关键能力如下。 数据治理与标准化能力 数据管…

数字技术重塑园区管理,数字园区开启智慧化新篇章,引领产业创新发展

目录 一、引言 二、数字技术重塑园区管理 1、智能化基础设施建设 2、数据驱动的决策管理 3、精细化服务模式 三、数字园区开启智慧化新篇章 1、智慧化运营管理 2、智慧化产业创新 3、智慧化生态环境 四、引领产业创新发展 1、推动传统产业转型升级 2、培育新兴产业…

A Geolocation Databases Study(2011年)第五部分:Evalution Model

下载地址:A Geolocation Databases Study | IEEE Journals & Magazine | IEEE Xplore 被引次数:195 Shavitt Y, Zilberman N. A geolocation databases study[J]. IEEE Journal on Selected Areas in Communications, 2011, 29(10): 2044-2056. 5. Discussion 在我们讨…

JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)

目录 ZoneId 常见方法 用法示例 ZoneDateTime 常见方法 用法示例 Instant 常见方法 用法示例 如果在开发中我们有这样的需求:我们的系统需要获取美国现在的时间,或者其他地区的时间给用户观看,或者进行一些处理,那应该怎…

企业常用Linux正则表达式与三剑客企业生产环境及知识/企业中远程连接ssh工具,需要一定的配置(为什么连接有时慢?)

企业高薪思维: 1.学习去抓重点有价值知识 2.猛劲学,使劲学(能否给别人将会,讲明白,写明白,练习明白),在学习过程中你觉得学会了60-80%,其实你只会了40-50%,你要讲明白会操…

毅速3D打印随形透气钢:革新传统,引领未来

透气钢,这种多孔金属材料,既融合了金属材料的坚固性,又具备了透气材料的通透性。尤其在注塑模具的制造中,透气钢的作用不可忽视。通过镶嵌透气钢,能够有效解决因困气产生的注塑问题,使成型加工更为完善&…

【云计算】云数据中心网络(三):NAT 网关

《云网络》系列,共包含以下文章: 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络(一):VPC云数据中心网络(二):弹性公网 IP云数据中心网络(三)…

做一个答题pk小程序多少钱

在探讨“做一个答题pk小程序多少钱”这一问题时,我们首先需要明确的是,小程序的价格并非固定不变,而是受到多种因素的影响。这些因素包括但不限于小程序的复杂度、功能需求、开发周期、技术难度以及开发团队的规模和经验等。因此,…

光网络中的低偏SOA与无源波导单片集成

----翻译自Aref Rasoulzadeh Zali等人2021年撰写的文章 摘要 在光通信系统中,非常需要可以通过简单工艺与无源光路单片集成的低偏振相关半导体光放大器(SOA)。然而,尽管已经报道了几种SOA,但在InP平台中将偏振无关的体…

MongoDB 索引全攻略

目录 一、索引介绍 1.1 单字段索引 1.2 复合索引 1.3 多键索引 1.4 主键索引 1.5 TTL 索引 1.6 地理空间索引 1.7 哈希索引 1.8 创建索引时注意事项 1.9 索引效果查看 二、索引实现原理 2.1 为什么使用 B-Tree 三、执行计划 一、索引介绍 任何数据库都有索引这一核心功能&…

sprinboot+vue集成neo4j图数据库

一 、java后台 1.1 package com.admin.domain;/*** 功能描述:** author wangwei* date 2024-01-15 22:13*/ public class ConnectWeb {private String connectWebId;private String connectWebName;private String connectWebInfo;private String personWebIdAlph…

指针专题(2)

前言 上一节我们学习了指针的相关内容,本节我们继续学习指针专题,更加深入的了解指针,那么废话不多说,我们正式进入今天的学习 1.对数组名的深入理解 在上一节的内容中,我们提到了用指针来访问数组的操作&#xff0c…

昂科烧录器支持Nuvoton新唐科技的低功耗微控制器M482SIDAE

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中Nuvoton新唐科技的低功耗微控制器M482SIDAE已经被昂科的通用烧录平台AP8000所支持。 M482SIDAE以Arm Cortex-M4F为核心,是带有DSP指令集的高效能低功耗微控制器。其…

Mybatis的注解开发

1、概述 mybatis中也提供了注解式开发方式,采用注解可以减少Sql映射文件的配置。 使用注解式开发的话,sql语句是写在java程序中的,这种方式也给sql语句的维护带来成本。 使用注解来映射简单语句会使代码显得更加简洁,但对于稍微…

ASP.NET基于WEB的工作计划流程管理系统的设计与实现

摘 要 信息技术的飞速发展,尤其是网络通讯技术、数据库技术及自动化技术的日新月异,为单位、企业的办公带来了极大的便利。但是由于单位、企业的工作性质众多,工作流程各有差异,企业、单位、部门之间的管理机制各不相同&#xf…
最新文章