java设计模式 -------- 创建模式 之 简单工厂模式

STM32 上 FreeRTOS 的启动与任务调度详解 4. SysTick定时器:FreeRTOS启动调度器后,会接管STM32的SysTick定时器,用于生成系统节拍,因此不要在HAL库中重复配置SysTick(比如HAL_Init()中已配置,无需再手动调用SysTick_Config()),否则会导致系统节拍异常,任务延迟不准。2. 任务栈大小需按需配置,不是越大越好(浪费RAM),也不能太小(会导致栈溢出),比如简单的传感器读取任务,1024字(4096字节)足够,复杂任务(比如串口接收+数据解析)可调整为2048字。 阅读详情

       本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.youkuaiyun.com/jesson20121020       

 

      工厂模式是最常用的模式,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a = new A(),工厂模式也是用来创建用来创建实例对象的,所以以后new时要多个心眼,是否可以考虑使用工厂模式。

      简单工厂模式又可以分成三种模式:

                 1) 普通简单工厂模式

                 2) 多方法简单工厂模式

                 3) 多静态方法简单工厂模式

普通简单工厂模式:

      举例:(简单的四则运算)

      1.  创建四则运算的共同接口:

//操作类接口
public interface Operator{

	public double Operate(double d,double e);
}

     2.  创建加减乘除实现类:

//加法类
public class AddOperator implements Operator{
	@Override
	public double Operate(double a, double b) {
		// TODO Auto-generated method stub
		return a + b;
	}
}
public class SubOperator implements Operator {

	@Override
	public double Operate(double a, double b) {
		// TODO Auto-generated method stub
		return a - b;
	}
}
public class MulOperator implements Operator {

	@Override
	public double Operate(double a, double b) {
		// TODO Auto-generated method stub
		return a * b ;
	}
}
public class DivOperator implements Operator {
	@Override
	public double Operate(double a, double b) {
		
			try {
				if(b == 0)
					throw new Exception("除数不能为0!");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		return a / b;
	}
}

      3.  创建工厂类:

public class OperatorFactory {
	public Operator createOperator(String operate){
		Operator oper = null;
		switch(operate){
			case "+" :
				oper = new AddOperator();
				break;
			case "-" :
				oper = new SubOperator();
				break;
			case "*" :
				oper = new MulOperator();
				break;
			case "/" :
				oper = new DivOperator();
				break;
		}
		return oper;
	}
}

     4. 最后就是测试类了:

public class FactoryTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		OperatorFactory factory = new OperatorFactory();
		Operator oper = factory.createOperator("*");
		double result = oper.Operate(3.6,4.8);
		System.out.println(result);
	}

}
    

多方法简单工厂模式:

       在上述普通简单工厂模式中,设想这样一种状况,如果传递进来的参数是空,或者是别的不合法字符,则不能正确的创建对象,而多方法简单工厂模式则提供多个工厂方法,分别创建对象。

       和普通的不同之处仅在工厂类,改动如下:

public class OperatorFactory {
	
	public Operator createAddOperator(){
		return new AddOperator();
	}
	public Operator createSubOperator(){
		return new SubOperator();
	}
	public Operator createMulOperator(){
		return new MulOperator();
	}
	public Operator createDivOperator(){
		return new DivOperator();
	}
}
     这样,在测试时,就不需要传递相应的参数,只需要调用需要的工厂方法,即可:

public class FactoryTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		OperatorFactory factory = new OperatorFactory();
		/*Operator oper = factory.createOperator("*");*/
		Operator oper = factory.createMulOperator();
		double result = oper.Operate(3.6,4.8);
		System.out.println(result);
	}
}


多静态方法简单工厂模式:

       所谓的静态方法,即将上面工厂类中的工厂方法置为静态的,不需要创建实例,直接调用即可。

public class OperatorFactory {
	
	public static Operator createAddOperator(){
		return new AddOperator();
	}
	public static Operator createSubOperator(){
		return new SubOperator();
	}
	public static  Operator createMulOperator(){
		return new MulOperator();
	}
	public static Operator createDivOperator(){
		return new DivOperator();
	}
}
        如上,将工厂方法设为静态的,则在测试时,直接调用即可。

public class FactoryTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 //OperatorFactory factory = new OperatorFactory();
		/*Operator oper = factory.createOperator("*");*/
		Operator oper = OperatorFactory.createMulOperator();
		double result = oper.Operate(3.6,4.8);
		System.out.println(result);
	}
}
      

         总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。





深度强化学习 | 详解基于价值的强化学习DQN算法(附Pytorch实现) 深度Q网络DQN的核心原理是通过经验回放池和目标网络技术拟合高维状态空间,是Q-Learning算法的深度学习版本,本文分析DQN的基本算法,并给出训练实例和实际案例 阅读详情

相关推荐

QMI8658姿态传感器实战:从校准到自检的完整避坑指南

本文详细解析了QMI8658姿态传感器的校准与自检流程,提供了从硬件环境搭建到高级功能开发的完整避坑指南。通过真实案例揭示电源设计、接口优化、温度补偿等关键细节,帮助开发者提升传感器精度和可靠性,适用于工业级应用场景。

weixin_29184075的博客 455

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

文章目录一、模式定义二、模式动机三、模式结构四、代码实现1、普通简单工厂2、多方法简单工厂3、静态方法简单工厂五、缺点 简单工厂模式(Simple Factory Pattern)不属于 GoF 的 23 种经典设计模式的范围,简单工厂一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。 一、模式定义 简单工厂模式(Simple Factory Pattern)又称为静态工厂方法(Static Factory Method)模式,它属于创建型模式。提供创建对象的最佳方式。 工厂模式,顾名思义,用来

WU4566285的博客 505

傅里叶光学(1)

傅里叶光学,可以看作是通信理论中傅里叶变换等一系列数学思想以及系统理论与光学(主要是衍射光学)相结合的产物关于傅里叶光学的应用领域,本节介绍了成像,当然事实上不可能仅限于成像,经典的还如激光散斑的一些应用,干涉计量,还有傅里叶变换光谱学等等。最后总结一下,傅里叶光学我认为可以看做一个工具,对于任意的系统,它能给出一些数学思想与物理原理进行解释和分析,找出系统的扰动和响应的关系,或者说根据扰动和响应,来研究或者设计一个系统。

m0_53607446的博客 1677

设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 简单工厂模式(Simple Factory Pattern) - Java实现

简单工厂模式(Simpale Factory Pattern):定义了一个工厂类,可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。 因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式。

Z 834

CARLA 0.9.15从零开始:环境搭建与基础场景实战指南

本文是CARLA 0.9.15从零开始的完整环境搭建与基础运行教程。详细介绍了在Linux系统下配置Python环境、下载安装CARLA核心软件包、启动服务器以及运行第一个基础场景的步骤。重点演示了如何通过Python客户端脚本生成随机车流,并手动控制EGO车辆在仿真城市中行驶,为自动驾驶算法开发构建了坚实的仿真测试基础。

weixin_29053383的博客 777

ADI恒流驱动芯片LT3763调试心得(25A恒流驱动)

看似很简单的一个电路,调了好几版硬件,中间还出现过一个插曲,就是电感,我用的是27A,1.5uH的,贴片封装,由于频繁试板,电感来回用热风枪拆了3次,结果上电空载到3A都没有问题,但是以上10A以上,就出现烧LT3763和mos的情况,一连烧了8片,搞得有点怀疑人生,一度觉得我的电路设计有问题,邮件咨询ADI的FAE后,确认电路设计没有问题。1、大功率同步整流的Nmos管都是取不同的型号,就是厂家推荐的主开关管和续流管的型号往往都不一样,这个里面有什么讲究,我没有整明白,暂时也不需要弄明白。

liming98lm的博客 3921

Java 设计模式 - 简单工厂模式 - 创建对象的简便之道

简单工厂模式是一种创建型设计模式,它通过一个工厂类来封装对象的创建逻辑,从而降低了类之间的耦合性,避免了代码重复,使代码更易于维护和管理。在Java中,简单工厂模式通常用于创建对象的场景,通过一个工厂类来隐藏对象的创建细节,使客户端代码更简洁、可维护和可扩展。通过此篇文章,让我们对简单工厂模式有了更深入的理解。在实际应用中,根据具体场景选择适合的设计模式是非常重要的。简单工厂模式是一种简便的方式来创建对象,但也需要考虑其优缺点,并根据实际情况做出选择。

Java Pro 939

零基础入门simulink仿真--通信领域的调制解调技术:基于Simulink的PM信号调制与解调仿真建模示例

PM的基本原理是将基带信号(如语音或音乐信号)加载到高频载波信号的相位上。通过改变载波的瞬时相位,可以实现信息的传输。PM的优点包括抗噪声能力强、频谱利用率较高等,但其解调过程相对复杂。通过Simulink,我们可以通过模块化的建模方式实现PM信号的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的PM信号调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解PM信号调制与解调的基本原理及其应用。所需工具和环境:列出进行PM仿真所需的工具和环境。

amy_mhd的博客 605

Java 设计模式-简单工厂模式

Java 设计模式-简单工厂模式 文章目录Java 设计模式-简单工厂模式介绍简单工厂模式的结构与实现**简单工厂模式的优缺点和适用环境** 介绍 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具

霍英俊 2513

Python代码加密与发布方案详解

本文详细介绍了多种Python代码保护方案,从基础加密到高级混淆,以及商业化发布的最佳实践。基础加密方案包括编译为字节码和使用PyArmor基础加密,适合临时保护和小项目。商业级加密方案如Cython编译和Nuitka完整打包,提供更高的保护强度和执行效率。高级混淆方案涉及控制流混淆、字符串加密和完整混淆工具链,进一步增加逆向难度。商业化发布方案则强调许可证系统集成、硬件绑定保护和完整发布流程。此外,文章还探讨了反逆向技术、最佳实践建议和常见问题解决方法。通过组合使用这些技术,可以构建出适合不同安全需求的P

数据知道的博客 1万+

【微服务】Spring AI Alibaba Jmus 从部署到项目实战详解

Spring AI Alibaba Jmus 从部署到项目实战详解

congge 4189

java设计模式一创建型模式一简单工厂模式

java设计模式一简单工厂模式

qq_48645407的博客 531

2023华为OD面试手撕真题【最长公共前缀】

2023华为OD面试手撕真题【最长公共前缀】

MISAYAONE的博客 5242

[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式

简单工厂模式提供了专门的工厂类用于创建对象,将对象的创建和对象的使用分离开,它作为一种最简单的工厂模式在软件开发中得到了较为广泛的应用。

程序员三木的博客 1551

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java设计模式--简单工厂模式

Java设计模式–简单工厂模式 文章目录Java设计模式--简单工厂模式前言一、工厂模式是什么?定义二、工厂模式的优缺点优点:缺点:三、模式的结构与实现四、应用场景 前言 现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简到繁一步一步迭代而来的,但对于调用者来说,却越来越简单 一、工厂模式是什么? 定义 工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工

weixin_43127250的博客 127

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

简单工厂模式总结-java版

目录 为什么要用工厂模式 简单工厂模式简介 简单工厂模式抽象代码 简单工厂模式具体代码 简单工厂模式的改进 简单工厂模式优点 简单工厂模式缺点 简单工厂模式适用场景 为什么要用工厂模式   与一个对象相关的职责通常有三类:对象本身所具有的职责、创建对象的职责和使用对象的职责。  在Java语言中,我们通常有以下几种创建对象的方式:        (1) 使用new关键字直接...

今天吃了吗的博客 447

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java设计模式--创建型设计模式-简单工厂模式

Java设计模式--创建型设计模式-简单工厂模式

Fatter$hday的博客 1209

从王者荣耀看设计模式(简单工厂模式)

从王者荣耀看设计模式(简单工厂模式) 一.简介 游戏开始前,玩家可从英雄池自由挑选将要出战的英雄 二.简单工厂模式 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式动机 在实际的软件开发过程中,有时需要创建一些来自相同父类的类的实例,为此可以专门定义一个类来负责创建这些类的实例,这些被创建的实例具有相同的父类。

妙乌的博客 390

java设计模式-创建型模式-简单工厂模式

简单工厂模式 简单工厂模式,有一个工厂类,根据传入的参数不同,创建不同的对象。又叫静态工厂方法类 三个角色 工厂类,用来创建对象 抽象对象类,所有需要被创建的对象的父类,封装一些公共的属性或方法 具体对象类,被创建的类 例子 玩具工厂,传入想要生产的玩具名字,生产对应的玩具 抽象类 public abstract class Toy { public abstract v...

荣大帅的博客 381

java 工厂方法模式 简单工厂_Java简单工厂模式(Simple Factory)详细介绍

我们都知道,在Java的多种设计模式中,工厂模式是一种比较常见的。而工厂模式中,又可以分为:简单工厂模式、工厂方法模式以及抽象工厂模式这三种。那么思博今天就来为大家详细介绍一下Java简单工厂模式(Simple Factory)。从定义上看,简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简...

weixin_28804379的博客 305

设计模式 - 创建型模式 - 简单工厂模式(Java)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 1.前言 在软件工程领域,依赖注入(Dependency Injection)是用于实现控制反转(Inversion of Control)的最常见的方式之一。本文主要介绍依赖注入原理和常见的实现方式,重点在于介绍这种年轻的设计模式的适用场景及优势...

了解➔熟悉➔掌握➔精通 3万+

【Java设计模式 设计模式与范式】创建型模式 二:简单工厂模式

当一种产品实现有多种不同的呈现方式或表现形式时,比较适合使用工厂模式,而简单工厂其实能适配我们日常使用的大多数场景,依据我在工作中的体验,工厂模式中几乎只用到了简单工厂。在几种简单工厂的实现中,我觉得多例模式(单例+Map)是最合适的工厂实现模式,它解决了if else这个灾难性问题,下一篇一起来看看工厂方法模式是怎么工作的吧!

MaoLin Tian's Blog 941

深入理解设计模式-简单工厂模式(静态工厂方法模式)

文章目录一、定义二、使用场景三、代码样例1.需求2.类图3.运算操作类4.操作工厂类5.客户端类四、优缺点结尾 一、定义 简单工厂模式是属于创建型模式,在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 二、使用场景 工厂类负责创建的对

少说,多做 1万+

【一】设计模式~~~创建型模式~~~简单工厂模式(Java)

设计模式~~~创建型模式~~~简单工厂模式(Java)

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 1277

java设计模式——创建型模式专题(一)简单工厂模式

UML图示:

瞌睡虫的专栏 521

【Java设计模式】系列一:简单工厂模式

前言 设计模式是Java面试过程中必不可少的一个知识点,面试官大概会问到【用过哪些设计模式,手写一个具体代码或者具体应用场景等等】,首先了解一下设计模式的具体分类; 设计模式大体可以分为三大类: 创建型模式: 共五种,工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式; 结构型模式: 共七种,适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式; 行为模式: 共十一种...

能先森的博客 301
上一篇: 数据结构(C实现)------- 遍历二叉树
下一篇: linux学习之命令(1)------ vi文本编辑器
jesson20121020
博客等级 码龄15年 361粉丝 99原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值