工厂模式(Factory Pattern)

简介

工厂模式属于创造型模式,它提供了一种创建对象的最佳方式。

创建对象时,无需指定创建的具体类。

它在创建时提供了一种封装机制,将实际创建的代码与使用代码分离。

主要用于解决接口选择问题;通过让其子类实现工厂,返回的也是一个抽象的对象。

具体实现

1、创建一个接口

public interface Number {void count();
}

2、创建实现接口的实体类

One.java

public class One implements Number{@Overridepublic void count() {System.out.println("这是One实现的Number中的count方法");}
}

Two.java

public class Two implements Number{@Overridepublic void count() {System.out.println("这是Two实现的Number中的count方法");}
}

Three.java

public class Three implements Number{@Overridepublic void count() {System.out.println("这是Three实现的Number中的count方法");}
}

3、创建一个工厂,生成基于给定信息的实体类的对象

/*** 这是一个数字工厂类*/
public class NumberFactory {/*** 使用getNumber获取方法的具体实现* @return*/public Number gerNumber(String numberType){if(numberType == null){return null;}if("One".equals(numberType)){return new One();}else if("Two".equals(numberType)){return new Two();}else if ("Three".equals(numberType)){return new Three();}return null;}
}

4、使用工厂,通过传递类型信息来获取实体类的对象

public class Test {public static void main(String[] args) {NumberFactory numberFactory = new NumberFactory();// 获取One对象,并调用他的count方法Number one = numberFactory.gerNumber("One");one.count();// 获取Two对象,并调用他的count方法Number two = numberFactory.gerNumber("Two");two.count();// 获取Three对象,并调用他的count方法Number three = numberFactory.gerNumber("Three");three.count();}
}

输出结果

这是One实现的Number中的count方法
这是Two实现的Number中的count方法
这是Three实现的Number中的count方法

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

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

相关文章

如何利用工作流自定义一个AI智能体

选择平台 目前已经有不少大模型平台都提供自定义智能体的功能,比如 百度的文心 https://agents.baidu.com/ 阿里的百炼平台 https://bailian.console.aliyun.com/。 今天再来介绍一个平台扣子(https://www.coze.cn/),扣子是…

翔云优配官网美股市场分析问界回应M7事故四大疑问

问界再次新M7 Plus山西高速事故。 4月26日下午,山西运城曾有一辆问界新M7 Plus车辆(以下简称“事故车辆”)在高速行驶时和一辆高速洒水车追尾,碰撞后车辆起火,造成三人遇难,该事故引发了广泛关注。 翔云优配以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了…

效率跨越式提升的工农业对机器人专业的需求

需求 需要用人的地方一定会逐步收缩。 原来需要人的地方也会逐步被机器人取代。 机器人这个专业最强的悖论就是可以部分取代人。 此处:用人的地方是指“工农业”,包括工业和农业。 机器人工程行业算制造业吗 机器人工程终身学习和工作计划 趋势 工匠…

安卓动态加载view

目录 前言一、addview1.1 addView 的重载方法1.2 在 LinearLayout 中的使用1.2.1 addView(View child)方法的分析:1.2.2 addView(View child, int index)方法的分析:1.2.3 小结 1.3 在 RelativeLayout 中的使用 二、addContentview2.1 测试 12.2 测试 22…

华为OD机试【最大N个数与最小N个数的和】(java)(100分)

1、题目描述 给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和,需要对数组进行去重。 说明: ● 数组中数字范围[0, 1000] ● 最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1 ● 输入非法返回-…

【解决方案】Can‘t exec “locale”: No such file or directory

【解决方案】Cant exec “locale”: No such file or directory 还可能出现的错误: 1. 报错原因: 缺少ldconfig 2. 解决方案: sudo apt-get download libc-bin dpkg -x libc-bin*.deb unpackdir/ sudo cp unpackdir/sbin/ldconfig /sbin/ s…

明星中药企业系列洞察(一)丨官宣提价后股价涨幅近15%,百年老字号佛慈制药如何焕发力量?

近日,佛慈制药发布公告称,鉴于原材料以及生产成本上涨等原因,公司对主营中成药产品的出厂价进行调整,平均提价幅度为9%。提价消息释出后,资本市场给出了态度:佛慈制药股价连续两天累计上涨近15%。佛慈制药近…

Docker安装部署一本通:从Linux到Windows,全面覆盖!(网络资源精选)

文章目录 📖 介绍 📖🏡 说明 🏡⚓️ 相关链接 ⚓️📖 介绍 📖 随着容器技术的飞速发展,Docker已成为现代软件开发和运维不可或缺的工具。然而,不同平台下的Docker安装部署方式各异,这常常让初学者感到困惑。本文将为您详细梳理各平台下Docker的安装部署方法,帮…

组件通信-(父子组件通信)

目录 一、什么是组件通信 二、组件关系的分类 三、组件通信解决方案 四、父传子 五、子传父 一、什么是组件通信 组件通信,就是指组件与组件之间的数据传递。组件的数据是独立的,无法直接访问其他组件的数据。如果想使用其他组件的数据,…

cron表达式xxljob

Cron格式说明 | | | | | | | | | | | | | — 年 (range: 1970-2099) | | | | | ------- 周 (range: 1~7) | | | | ----------- 月(range: 1~12) | | | --------------- 日(range: 1~31) | | ------------------- 时(range: 0…

软件FMEA的时机:架构设计、详设阶段——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 软件FMEA(故障模式与影响分析)是一种预防性的质量工具,旨在识别软件中可能存在的故障模式,并分析其对系统性能、安全性和可靠性的影响。在软件开发生命周期中,选择适当的时机进行FME…

工业光源环形系列一高亮条形光源特点

产品特点 ◆可以根据检测需求随意调整照射角度; ◆可以根据检测需求选择光源颜色; ◆多个条形光源可以自由组合; ◆使用大功率贴片灯珠,亮度高; ◆灯珠上面增加透镜,照射距离更远

【Unity动画系统】动画层级(Animation Layer)讲解与使用

如何使用Unity的Animation Layer和Avater Mask把多个动画组合使用 想让玩家持枪行走,但是手里只有行走和持枪站立的动作。 Unity中最方便的解决办法就是使用动画层级animation layer以及替身蒙版avatar mask。 创建一个动画层级 Weight表示权重,0的话则…

使用 OpenNJet 分分钟完成打地鼠小游戏部署

文章目录 OpenNJet应用引擎什么是应用引擎什么是OpenNJet独特优势技术架构 OpenNJet安装RPM安装 部署打地鼠小游戏配置OpenNJet部署打地鼠小游戏启动 NJet访问打地鼠小游戏 总结 今天阿Q打算使用OpenNJet应用引擎来部署一下我们的打地鼠小游戏。在开始部署之前,我们…

教你快速记录每日待办事项,并提醒自己按时完成不忘记

在忙碌的日常生活中,我们经常会面临待办事项繁杂、时间紧迫的困扰。为了更高效地管理时间和任务,我们需要一个能够快速记录并准时提醒我们完成待办事项的工具。此时,敬业签这类的待办软件就成为了很多人的首选工具。 敬业签是一款功能强大的…

Raft共识算法图二解释

下面是有关Raft协议中不同术语和概念的翻译及解释: 术语和概念: 任期号(term number):用来区分不同的leader。前一个日志槽位的信息(prelogIndex):这是前一个日志条目的索引&#…

5000亿参数来了:微软将推出 MAI-1 模型硬刚谷歌和OpenAI|TodayAI

美国的科技巨头微软公司,正在积极扩展其人工智能(AI)技术的领域。最新消息显示,微软将推出一款名为MAI-1的全新AI模型,其规模巨大,预计将拥有5000亿个可调参数。这一开发工作由Inflection AI的CEO穆斯塔法苏…

深度剖析Comate智能产品:科技巧思,实用至上

文章目录 Comate智能编码助手介绍Comate应用场景Comate语言与IDE支持 Comate安装步骤Comate智能编码使用体验代码推荐智能推荐生成单测注释解释注释生成智能问答 Comate实战演练总结 Comate智能编码助手介绍 市面上现在有很多智能代码助手,当时互联网头部大厂百度也…

损失函数详解

1.损失函数 是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越接近真实值。对每个单独的观测(数据点)计算损失函数。将所有损失函数(loss function&#xf…

文件夹重命名技巧:克服文件夹名混乱不规律的难题,实现高效管理

在数字时代,我们每天都在与无数的文件夹打交道。这些文件夹中可能存储着文档、图片、视频等各种类型的文件。然而,随着文件夹数量的增加,如何有效地管理和命名这些文件夹成为了一个挑战。混乱和不规律的文件夹名不仅降低了工作效率&#xff0…