设计模式-简单工厂模式(2)

小谈设计模式(2)—简单工厂模式 对简单工厂模式进行细致分析,对程序思维有一定帮助 阅读详情

1)简单工厂模式是属于 创建型模式,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
2)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)
请添加图片描述

将Pizza 类做成抽象

public abstract class Pizza {
	protected String name; //名字

	//准备原材料, 不同的披萨不一样,因此,我们做成抽象方法
	public abstract void prepare();

	
	public void bake() {
		System.out.println(name + " baking;");
	}

	public void cut() {
		System.out.println(name + " cutting;");
	}

	//打包
	public void box() {
		System.out.println(name + " boxing;");
	}

	public void setName(String name) {
		this.name = name;
	}
}
public class CheesePizza extends Pizza {

	@Override
	public void prepare() {
		// TODO Auto-generated method stub
		System.out.println(" 给制作奶酪披萨 准备原材料 ");
	}

}
public class GreekPizza extends Pizza {

	@Override
	public void prepare() {
		// TODO Auto-generated method stub
		System.out.println(" 给希腊披萨 准备原材料 ");
	}

}
public class PepperPizza extends Pizza {

	@Override
	public void prepare() {
		// TODO Auto-generated method stub
		System.out.println(" 给胡椒披萨准备原材料 ");
	}

}

简单工厂类,决定创建哪个实例

public class SimpleFactory {

	//更加orderType 返回对应的Pizza 对象
	public Pizza createPizza(String orderType) {

		Pizza pizza = null;

		System.out.println("使用简单工厂模式");
		if (orderType.equals("greek")) {
			pizza = new GreekPizza();
			pizza.setName(" 希腊披萨 ");
		} else if (orderType.equals("cheese")) {
			pizza = new CheesePizza();
			pizza.setName(" 奶酪披萨 ");
		} else if (orderType.equals("pepper")) {
			pizza = new PepperPizza();
			pizza.setName("胡椒披萨");
		}
		
		return pizza;
	}
}
public class OrderPizza {


	//定义一个简单工厂对象
	SimpleFactory simpleFactory;
	Pizza pizza = null;
	
	//构造器
	public OrderPizza(SimpleFactory simpleFactory) {
		setFactory(simpleFactory);
	}
	
	public void setFactory(SimpleFactory simpleFactory) {
		String orderType = ""; //用户输入的
		
		this.simpleFactory = simpleFactory; //设置简单工厂对象
		
		do {
			orderType = getType(); 
			pizza = this.simpleFactory.createPizza(orderType);
			
			//输出pizza
			if(pizza != null) { //订购成功
				pizza.prepare();
				pizza.bake();
				pizza.cut();
				pizza.box();
			} else {
				System.out.println(" 订购披萨失败 ");
				break;
			}
		}while(true);
	}
	
	// 写一个方法,可以获取客户希望订购的披萨种类
	private String getType() {
		try {
			BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("input pizza 种类:");
			String str = strin.readLine();
			return str;
		} catch (IOException e) {
			e.printStackTrace();
			return "";
		}
	}

}

//相当于一个客户端,发出订购
public class PizzaStore {

	public static void main(String[] args) {
		使用简单工厂模式
		new OrderPizza(new SimpleFactory());
		System.out.println("~~退出程序~~");
	}
}
Synopsys AXI VIP 从环境搭建到首个验证场景运行 本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。 阅读详情

相关推荐

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6549

简单工厂模式(静态工厂方法模式)

概述: 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。不是23种模式中的一种,是一种编码习惯。 优点 1.工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品;简单工厂模式通过这种做法实现了对责任的分割,它提供了专门的工厂类用于创建对象。 2.客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。 3.通过引入配置文

weixin_49107940的博客 4094

SpringBoot项目整合达梦数据库(MYSQL 转换 达梦数据库)

注意:当迁移过程中出现下面问题时,如有触发器或者外键,需要先关掉触发器和外键,然后进行迁移,不然会导致迁移失败。(2)dm.ini修改【#compatibility】的【COMPATIBLE_MODE】=4。3、添加用户:如果导入的DM数据库需要和MYSQL的用户一样,添加ROOT用户。方法一:服务器配置:设置系统兼容性(DM控制台工具),兼容MySQL。服务器配置又该有两种方式:①DM控制台工具修改;MYSQL的数据表转换成DM的数据表时,点击转换按钮。在这里操作:MYSQL数据库迁移至DM数据库。

m0_74824635的博客 2013

Java设计模模式 - 工厂模式

优势:将产品实现和使用解耦,如果要改变产品的实现,对于创建者没有影响(调用创建者接口,而不关心如何创建)工厂方法定义一个创建对象的接口的工厂,需要子类来实例化具体的工厂,创建工厂需要子类来实现。再创建类的时候,有时候静态工厂方法可能更加合适,而不是只考虑构造方法。优势:可以把一群相关的产品集合起来,比如某些产品的颜色都是一样的。指定一个接口,用来创建依赖对象的家族的工厂,而不是指定具体的类。缺陷:工厂方法太单一,一个工厂只能生产一个品类。静态工厂方法的优缺点。工厂模式——工厂方法。工厂模式——抽象工厂。

今晚看星星的博客 1527

ArduPilot + Gazebo + Mavros + QGC + 遥控器:从仿真到实机的自主轨迹控制实践

本文详细介绍了基于ArduPilot、Gazebo、Mavros和QGC的无人机自主轨迹控制全流程实践。从仿真环境搭建、多终端协同配置,到遥控器集成与自主圆形轨迹算法实现,提供了完整的代码示例和实机迁移要点,帮助开发者快速掌握无人机自主控制技术。

corn8的博客 940

淘宝电商产品价格官方防爬取采集设计机制,如何破?|淘宝电商API数据采集看完你也会!

然而,随着电子商务的蓬勃发展,涌现出大量的第三方工具和应用,试图通过采集淘宝电商产品价格等信息来进行数据分析和竞争优势的获取。为了维护市场秩序和保护商家权益,淘宝采取了一系列的防爬取设计机制,以阻止非授权的数据采集行为。为了确保数据的准确性和及时性,淘宝采取了多层次的防爬取机制,以限制未经授权的数据采集。其它的情况,比如淘宝首页、淘宝关键词商品搜索结果页面、商品详情页面,都是正常展示,未实现加密;也可以使用【tesseract ocr识别】指令,这个是免费无限使用的;【淘宝商品搜索结果页面-本地截图】

TinagirlAPI的博客 1385

设计模式之工厂模式

工厂方法模式,又称工厂模式、多态工厂模式或虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类负责生成具体的对象抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口。

weixin_47292529的博客 1856

深度学习&故障诊断初学者 - 学习路线

针对初学者,一头雾水,不知如何学习,本文给出了一个学习路线 Python学习 - 打好编程基础 https://www.bilibili.com/video/BV1vA411b7Rn?spm_id_from=333.337.search-card.all.click B站免费课程 学到P49 建议时长 2周 深度学习理论 - 浅浅理解神经网络 https://www.bilibili.com/video/BV1FT4y1E74V?p=41 建议时长 2周...............

m0_47410750的博客 6万+

Java 设计模式之静态工厂方法模式

静态工厂方法模式,又称为简单工厂模式,是最简单最易理解的工厂模式,本文通过一个 “月饼” 例子,一起来学习下这种设计模式吧!

牛角尖 2442

避坑指南:C#调用CodeSoft打印标签时常见的5个错误及解决方法

本文总结了C#调用CodeSoft打印标签时常见的5个核心错误及解决方案,涵盖环境配置、模板加载、变量赋值、打印机切换和资源管理。重点解析了如何避免COM对象创建失败、模板路径错误、变量名不匹配、打印机切换异常及内存泄漏等问题,帮助开发者实现稳定高效的标签打印集成。

weixin_29215815的博客 223

实战MSP-M0G3507与陶晶驰串口屏的通信协议解析

本文详细解析了MSP-M0G3507微控制器与陶晶驰串口屏的通信协议实现。内容涵盖串口配置、协议帧结构、数据校验机制及ASCII协议实战代码,重点介绍了陶晶驰串口屏的指令集应用和调试技巧,为嵌入式开发提供可靠的串口通信解决方案。

h9j8k7l6m5n的博客 867

创建型设计模式(2)—— 简单工厂模式(Simple Factory Pattern)

1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。简单工厂模式(Simple Factory Pattern)属于创建型模式。简单工厂模式,由一个工厂对象决定创建出哪一种产品类的实例,它经常被用于封装创建对象的代码。简单工厂模式类图结构: SimpleFactory:简单工厂类,简单工厂模式的核心,它负责实现创建所有实例。简单工厂创建产品的方法可以被外界直接调用来创建所需的产品对象。......

Doublelv 的博客专栏。 1950

微信小程序 - 实现人脸识别对比+人脸相似度数据,用户从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,微信小程序检测人脸相似度(免费纯前端方案+调用第三方API接口方案)

微信小程序实现人脸识别对比,微信小程序人脸对比 人脸对比识别 人脸对比相似度,实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,小程序人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,微信小程序人脸相似度对比分析,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。小程序如何实现人脸相似度比对,小程序纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,调用百度AI的人脸识别,微信小程序中实现人脸识别认证,实现人脸检测、人脸

🏆 前端领域优质创作者 4862

Yii2 设计模式——简单工厂模式

除了使用 new 操作符之外,还有更多的制造对象的方法。你将了解到实例化这个活动不应该总是公开进行,也会认识到初始化经常造成“耦合”问题。 应用举例 yii\db\mysql\Schema 中: //创建 QueryBuilder 实例 public function createQueryBuilder() { return new QueryBuilder($this->db); }...

echojson的专栏 201

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Yii2设计模式——简单工厂模式

除了使用 new 操作符之外,还有更多的制造对象的方法。你将了解到实例化这个活动不应该总是公开进行,也会认识到初始化经常造成“耦合”问题。 应用举例 yii\db\mysql\Schema中: //创建 QueryBuilder 实例 public function createQueryBuilder() { return new QueryBuilder($this->db); } ...

米粒人生 454

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

AS2与设计模式(一)---简单工厂模式

AS2与设计模式(一)---简单工厂模式:     "想出设计模式的人是天才,而学会他的人最多只能算是一个好的工匠"----某个高人简单工厂模式恐怕是所有设计模式里最好懂的一个了,难怪我这个菜鸟也能写篇文章来介绍它了:     简单工厂模式总体上是这样运作的:用户通过一个接口参数(整数或String之类)告诉加工者你想要的具体产品,然后加工者就通过if (argu==0) return new C

1242

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C#设计模式(2)——简单工厂模式

C#设计模式(2)——简单工厂模式 一、引言   这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式。 二、简单工厂模式的介绍   说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产...

fgmah2000的博客 145

23种设计模式(2)-简单工厂模式

这些设计模式都是在这么多年的软件开发中,先辈对软件重构的经验总结提炼的结果,这些设计模式要遵循软件设计的六原则。每一种设计模式都有相应的需求场景的。有了这些设计模式的思想和面向对象的思想,在软件设计特定的需求中会给你解决思路。一,需求场景        在此,我也借用书上看到的一个例子。计算器工厂给我们留了一些任务,设计一个计算器做成成品卖给买家。但是这个任务是分两个阶段让我们实现的。如下:

至尊宝 5796

设计模式----2(简单工厂模式的概念,简单工厂模式的实现,简单工厂模式的优缺点)

简单工厂模式 简单工厂模式的概念 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负 责创建其他类的实例,被创建的实例通常都具有共同的父类。 具体分类 工厂(Creator)角色 简单工厂模式的核心, 它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调 用,创建所需的产品对象。 抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所...

LXY的博客 896

设计模式【2】-- 简单工厂模式了解一下?

文章目录1.简单工厂模式介绍2.简单工厂模式举例3.简单工厂模式的优劣 1.简单工厂模式介绍 工厂模式,比较常用,属于创建型模式,也就是主要是用来创建对象的。工厂模式,有三种,主要分为: 简单工厂模式 工厂方法模式 抽象工厂模式 其中,本文要讲的就是,简单工厂模式,但是简单工厂模式,并不是属于GoF讲的23种设计模式中。简单工厂模式,也叫静态工厂方法模式。简单而言,就是有一个具体的工厂类,用来生产不同类型的对象,而这些对象,都有相似的特点,它们都实现同一个接口。 什么时候应该使用工厂模式?为什么需要工厂

秦怀杂货店 341

2、设计模式之简单工厂模式

先看一个需求 完成一个披萨的项目:要便于披萨种类的扩展,便于维护 披萨的种类很多(比如GreekPizz、CheesePizz等) 披萨的制作过程有prepare、bake、cut、box 完成披萨店的订购功能。 用传统方式实现 创建5个类:Pizza抽象类、CheesePizza实现类、GreekPizza实现类、OrderPizza订购披萨类、PizzaStore输出类 类图如下【蓝色实心箭头代表继承关系、虚线代表依赖关系】: Pizza抽象类 package com.hupp.factory.

pp_hu的博客 190

设计模式(2)简单工厂模式

简单工厂模式 创建型模式关注对象的创建过程,在软件开发中应用非常广泛。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象过程中无须关心对象的创建细节,从而降低系统耦合度,并且让系统易于修改和扩展。 简单工厂模式是最简单的设计模式之一,但应用也十分频繁,同时也是其余创建模式的基础,因此有必要先学习简单工厂模式。 简单工厂模式基本实现流程 由上述例子,可以很容易总结出简单工厂的实现流程: 设计一个抽象产品类,它包含一些公共方法的实现; 从抽象产品类中派生出多个具体产品类,如篮球类、足球类、排球类,具体

qq_24649627的博客 209

Java设计模式2:简单工厂模式

简单工厂模式 这种类型的设计模式属于创建型模式,主要解决接口选择的问题,当我们明确地计划不同条件下创建不同实例时,让其子类实现工厂接口。 简单工厂模式示例 public interface Human { void getColor(); } 有两个子类白人和黄种人: public class WhiteHuman implements ...

aiximi7001的博客 150

设计模式——2.简单工厂模式

设计模式主要分为3大类:创建型模式、行为型模式、结构型模式。 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 下面开始介绍创建型模式中的“简单工厂模式”。 1. 模式动机 考虑一个简单...

weixin_30778805的博客 73
上一篇: 设计模式-简单工厂模式之静态工厂模式 (3)
下一篇: 设计模式-工厂方法模式
Java_lwt
博客等级 码龄7年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值