《java与模式》笔记(八) 简单工厂模式

1、简单工厂模式实现计算器功能 简单工厂模式实现计算机功能 文章目录简单工厂模式实现计算机功能简介创建型模式简单工厂模式概述流程结构理解类图优点缺点适用环境练习题目源代码 简介 创建型模式 了解简单工厂模式之前,首先要先了解下创建型模式,接下来的Java设计模式的学习,将会逐步学习创建型模式下的6种模式。 创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。 在GoF设计模式中包含5种创建型模式,通常将一种非GoF设计模式——简单工厂模式作为学习其他工厂模式 阅读详情

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。

ξ 12.1 工厂模式的几种形态:

① 简单工厂(Simple Factory),又称静态工厂方法模式;
② 工厂方法(Factory Method),又称多态性工厂(Polymorphic Factory)模式或虚拟构造子(Virual Constructor)模式;
③ 抽象工厂(Abstract Factory),又称工具箱(Kit或Toolkit)模式。

☆ 简单工厂模式,是不同的工厂方法模式的一个特殊实现。在java语言中,通常的工厂方法模式不能通过设计功能的退化给出静态工厂模式。

ξ 12.2 简单工厂模式的引进
本节通过一个农场的实例来引入简单工厂模式,农场供应三种水果,他们是Grape、Strawberry和Apple。还有一位园丁FruitGardener,他负责提供客户需要的水果。他们的UML图如下:

水果接口定义出所有水果的抽象,具体行为包括种植、生长和收获,代码如下:

public interface Fruit
{
    
public void grow();
    
public void harvest();
    
public void plant();
}

Apple是一种水果,同时由于是多年生植物,多出一个treeAge属性,代码如下:

public class Apple implements Fruit
{
    
public void grow()
    
{
        System.out.println( 
"Apple:grow" ) ;
    }

    
    
public void harvest()
    
{
        System.out.println( 
"Apple:havest" ) ;
    }

    
    
public void plant()
    
{
        System.out.println( 
"Apple:plant" ) ;
    }

    
    
private int treeAge ;
    
    
public int getTreeAge()
    
{
        
return this.treeAge ;
    }

    
    
public void setTreeAge( int treeAge )
    
{
        
this.treeAge = treeAge ;
    }

}

Grape也是一种水果,同时具有seedles属性区分是否有籽,代码如下:

public class Grape implements Fruit
{
    
private boolean seedless;

    
public void grow()
    
{
        System.out.println( 
"Grape:grow" ) ;
    }

    
    
public void harvest()
    
{
        System.out.println( 
"Grape:havest" ) ;
    }

    
    
public void plant()
    
{
        System.out.println( 
"Grape:plant" ) ;
    }


    
public boolean getSeedless()
    
{
        
return seedless ;
    }


    
public void setSeedless(boolean seedless)
    
{
        
this.seedless = seedless ;
    }

}

Strawberry的代码如下:

public class Strawberry implements Fruit
{
    
public void grow()
    
{
        System.out.println( 
"Strawberry:grow" ) ;
    }

    
    
public void harvest()
    
{
        System.out.println( 
"Strawberry:havest" ) ;
    }

    
    
public void plant()
    
{
        System.out.println( 
"Strawberry:plant" ) ;
    }

}

园丁FruitGardener是农场中的工厂类角色,它负责根据客户的不同需求(传入的参数不同)来产生不同的水果。它的代码如下:

public class FruitGardener
{
    
public static Fruit getFruit( String name )
    
{
        Fruit result 
= null ;
        
        
if ( name.equalsIgnoreCase( "apple" ) )
            result 
= new Apple() ;
        
else if ( name.equalsIgnoreCase( "grape" ) )
            result 
= new Grape() ;
        
else if ( name.equalsIgnoreCase( "strawberry" ) )
            result 
= new Strawberry() ;
        
        
return result ;
    }

}

ξ 12.3 简单工厂模式的结构

☆ 简单工厂模式涉及到三个角色:
① 工厂类角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体java类实现。
② 抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个java接口或者java抽象类实现。
③ 具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体java类实现。

ξ 12.4 简单工厂模式的实现

☆ 对多层次的产品结构,简单工厂模式统一使用一个工厂类。好处是设计简单,缺点是新增的产品必将导致工厂类的修改。

☆ 一个工厂类中可以有多个工厂方法用来返回不同的产品角色

☆ 简单工厂方法中角色的省略
① 抽象产品角色的省略,如果系统中只有一个具体产品,可以省略掉抽象产品角色;
② 工厂角色与抽象产品角色合并,典型如java.text.DateFormat;
③ 三个角色全部合并。

ξ 12.5 简单工厂模式与其他模式的关系
单例、多例模式都是简单工厂方法的特殊应用,其他还有备忘录模式和更高级的MVC模式。

ξ 12.6 简单工厂模式的优点和缺点
☆ 优点:该模式的核心是工厂类,这个类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例。而客户端则可以免除直接创建产品对象的责任,而仅仅负责消费产品,简单工厂模式通过这种做法实现了对责任的分割。

☆ 缺点:工厂类担负太多的逻辑,形成了全能的上帝类;简单工厂模式的工厂是静态实现,无法继承;工厂类通常只能部分满足开闭原则。 

《JAVA与模式》之简单工厂模式 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 阅读详情

相关推荐

python机器人编程——用pytorch实现六轴机械臂的正向和逆向数值解算,及python算法解析

前面对六轴(或多轴)机械臂进行了一些研究,特别是利用几何进行简化,实现逆解,来完成比较简单的搬用任务。然而,如果需要比较精确的操作任务,可能需要更加复杂的机械臂解算。其中比较复杂的是数值解算,这种解算往往涉及到比较复杂的机器人运动等原理知识,比较难以上手。但是,python的生态挺全面,已经有很多牛人实现了数值解法,但是去看他们的代码,还是觉得费劲。此外,随着深度神经网络的兴起,很多是用建立深度学习神经网络,去利用机械臂输入输出的大数据,训练机械臂的控制模型,这个上手也比较慢。

JAMES费的空间 5794

有一个农场公司,专门向市场销售各类水果,主要包括下列水果:葡萄 Grape,草莓 Stuawberry,苹果 Apple;有一个Fruit接口,包含grow生长,harvest收获和plant方法,

package com.a; /** * @author 夜灬瞬 * @date 2021年12月08日 9:58 */ public class Test16 { public static void main(String[] args) { Fruit fruit = FruitGardener.etFruit("apple"); fruit.plant(); fruit.grow(); fruit.harveat();.

heiye12138的博客 991

别再花钱买商业软件了!这4款免费DIC工具,从散斑生成到应变分析全搞定

本文介绍了4款免费开源的DIC(数字图像相关技术)工具,涵盖从散斑生成到应变分析的全流程,帮助用户零成本构建专业级DIC工作流。这些工具在精度、算法透明度和生态整合方面具有优势,适用于材料力学和实验力学研究,可替代昂贵的商业软件。

weixin_42525369的博客 169

java静态工厂方法与工厂模式

静态工厂方法和工厂模式很像,但是在java中还是有很大区别的。(一)静态工厂方法vs工厂模式对于一个类来说,为了让客户端获得一个自身的实例,最常用的方法就是提供一个公有的构造器。除了这种使用构造器的方法之外,对于单个类来说,我们可以定义静态工厂方法来获取自身的类的一个实例。静态工厂方法和工厂模式的不同也体现在此,静态工厂方法是获取这个类自身的一个实例,他的存在是为了更好的描述和处理这个类。而工厂模式

往事散云烟,十寸光阴换一钱 9103

带隙基准电路实战:温度补偿与流片调优全解析

带隙基准(BGR)是模拟芯片中实现高精度、低温漂电压参考的核心电路,其本质是利用硅材料禁带宽度的物理稳定性,通过PTAT(正温度系数)与CTAT(负温度系数)电压的加权叠加抵消温度影响。原理上需兼顾一阶线性补偿与二阶曲率校正,技术价值在于支撑ADC/DAC/LDO等关键模块的精度与可靠性。典型应用场景涵盖车规级MCU、工业传感器和高精度电源管理芯片。工程落地难点集中于工艺偏差、运放失调、寄生效应及版图热电耦合——这正是‘带隙基准设计’与‘带隙基准调优’的根本分野。本文聚焦真实流片经验,深入拆解Widlar架

weixin_42628280的博客 254

利用 vivado实现加减法器的设计

本科计组实验:利用 vivado实现加减法器的设计

qq_52052302的博客 1万+

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

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

牛角尖 2442

042、双管反激的电压应力优势

【摘要】本文通过300W工业电源炸管案例,对比分析了单管与双管反激拓扑的电压应力差异。单管反激因漏感能量难以处理,尖峰电压可达1180V,需依赖RCD吸收电路但效率低下;双管反激通过钳位二极管将漏极电压限制在输入电压水平(实测650V),能量回馈使效率提升2-3%。虽增加两个MOS管,但可选用600V器件(单管需1200V),总成本反降15%以上。作者建议150W以上或高压输入场景优先采用双管反激,其确定的电压应力可显著提升可靠性,避免单管反激的参数玄学问题。关键设计要点包括快恢复二极管选型、紧凑布局及漏感

Jack010169的博客 83

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

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

少说,多做 1万+

FortiWeb 相对路径遍历漏洞复现(CVE-2025-64446)

FortiWeb是Fortinet公司推出的企业级Web应用防火墙(WAF),专为保护Web应用和API抵御高级威胁设计。它集成人工智能与机器学习技术,通过双层检测引擎(HMM模型与SVM向量机)精准识别异常流量,可防御OWASP Top 10攻击、SQL 注入、XSS、DDoS及恶意机器人。其核心功能包括API自动化保护、虚拟补丁集成(兼容Acunetix等第三方扫描工具)及智能流量分析,支持HTTP/2、WebSocket等现代协议。(CVE-2025-64446)

iSee857的博客 467

硬核反坑!YOLOv5训练避坑指南:根治梯度消失、不收敛、检测漏框三大核心问题(附实战代码+调优清单)

数据是基础,超参数是关键,模型是工具,训练策略是保障。梯度消失、不收敛、检测漏框这三大问题,本质上都是“数据-模型-训练”不匹配的结果。梯度消失/爆炸:优先调整学习率策略+梯度裁剪,其次优化模型结构;训练不收敛:优先清洗数据集,其次调优超参数,最后检查配置文件;检测漏框:优先重新聚类锚框,其次增强浅层特征,最后调整推理参数。YOLOv5训练的最高境界,不是调参,而是让数据、模型、训练策略三者完美匹配。按本文的方法反坑,你的YOLOv5训练一定能一次成功!🚀。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 233

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

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

霍英俊 2513

Android 15.0 Launcher3中去掉Hotseat功能实现

在15.0系统产品定制化开发中,在Launcher3的定制化需求也是特别多的,由产品是小屏幕的产品,所以产品需求Launcher3 页面布局的原因,要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标,而做满屏app的显示,从而达到美观的效果,下面就来分析去掉Hotseat从而实现这个功能

安卓兼职framework和app工程师的博客 555

创建型模式-简单工厂模式(静态工厂方法模式)

目录 1. 简单工厂模式概述 1.1 概念 1.2角色 1.3 类图 2. 简单工厂模式创建原理 3. 简单工厂模式的优缺点 3.1 优点 3.2 缺点 3.3 使用场景 1. 简单工厂模式概述 1.1 概念 简单工厂模式又称为静态工厂方法模式。将一个具体类的实例化交给一个静态工厂方法来执行定义一个类,根据参数的不同返回不同的类的实例。这些类具有公共的...

云上道人的博客 569

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java静态工厂方法与工厂模式

静态工厂方法和工厂模式很像,但是在java中还是有很大区别的。 (一)静态工厂方法vs工厂模式 对于一个类来说,为了让客户端获得一个自身的实例,最常用的方法就是提供一个公有的构造器。除了这种使用构造器的方法之外,对于单个类来说,我们可以定义静态工厂方法来获取自身的类的一个实例。静态工厂方法和工厂模式的不同也体现在此,静态工厂方法是获取这个类自身的一个实例,他的存在是为了更好的描述和处理这个类。...

诚 1285

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java静态工厂方法 —— 有了它,你还需要工厂模式吗

本文结合《Effective Java》第一章第一条目《考虑用静态工厂方法代替构造器》和自己的理解及实践,讲解了Java静态工厂方法的知识点,并在文末附上了自己对静态工厂方法和工厂模式的区别的理解,文章发布于专栏Effective Java,欢迎读者订阅。

SexyCode 9478

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

定义: 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同的实例,被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。 严格来讲,简单工厂模式并不属于23中设计模式,但是它在软件设计和...

itccccc的专栏 763

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

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

weixin_39781687的博客 1696

简单工厂模式的java实现例子

简单工厂模式是属于创建型模式,又叫做静态工厂方法模式。 它的实现方式是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 简单工厂模式由三种角色组成: 1、工厂角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。 2、抽象产品角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 3、具体产品角色:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具

pnjlc的专栏 7498

Java代码实现简单工厂模式

模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式结构 简单工厂模式包含如下角色: Factory:工厂角色 Product:抽象产品角色 C...

IBLiplus的博客 4973

JAVA设计模式之 简单工厂模式【Simple Factory Pattern】

一、概述 er、适用场景

小吕丶Code阶区 5319

JAVA简单工厂模式

1.工厂模式概念 工厂模式是常见的创建模式之一。 定义:工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式; 核心:         (1)实例化对象,用工厂方法代替new操作。         (2)将选择实现类,创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。 特点:实现了创建者和调用者的分离。 分类:         (1)简单工厂模

路ren甲 2565

Java 设计模式(一):简单工厂模式

参考链接:简单工厂模式-Simple Factory Pattern 1. 模式定义 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式。 2. 模式概述 简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程...

钱立清的博客 3336

学习笔记:简单工厂模式(静态工厂方法模式)

1、模式动机 想吃水果只需要知道水果的名字则可得到相应的水果 2、模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 3、模式结构 简...

wsndbbhh的博客 605
上一篇: 《java与模式》笔记(七) 迪米特法则
下一篇: jsp参考(一) 动作元素[action]
plusir
博客等级 码龄24年 11粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值