简单工厂模式

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

简单工厂模式的动机

简单工厂模式主要应用在简历大量功能相似的类时。比如在界面上,按钮需要具有相同的画风、外观等等,但是具体的功能不一样。也就是类型相似,但是功能不同(也就是通常拥有相同的父类)。如果使用普通的new对象来创建,将会出现大量的new对象。通常使用一个工厂类来进行创建具体的类。

模式定义

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

模式的结构

简单工厂的角色

工厂模式的 UML 图

代码分析
  1. Shape.java
  2. public interface Shape {
  3. void draw();
  4. }
  5. Circle.Java
  6. public class Circle implements Shape {
  7. @Override
  8. public void draw() {
  9. System.out.println("i am a circle");
  10. }
  11. }
  12. Square.java
  13. public class Square implements Shape {
  14. @Override
  15. public void draw() {
  16. System.out.println("I am a Square");
  17. }
  18. }
  19. ShapeFactory.java
  20. public class ShapeFactory {
  21. public static Shape create(String shapeType){
  22. if (shapeType == "square"){
  23. return new Square();
  24. } else{
  25. return new Circle();
  26. }
  27. }
  28. public static void main(String[] args) {
  29. Shape shape = ShapeFactory.create("square");
  30. shape.draw();
  31. }
  32. }

简单工厂模式的意义

  • 简单工厂模式的本质仍然是根据传入的值创建对象,通过不断的if或者else if来判断需要创建的对象
  • 简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。
  • 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。
  • 简单工厂将同一接口下的类进行统一创建,将创建与使用进行解耦,降低了组件之间的依赖性,对象的业务不依赖于他的对象而是依赖于工厂和统一的接口,工厂基于不同的对象进行调度,如果需要返回别的对象,可以只需要修改工厂类,而不需要找到所有的业务实现中的调用,使对象的创建更加灵活

简单工厂的使用情景

  • 首先因为简单工厂需要不停的进行判断,所以如果需要创建的类太多,工厂方法就会进行复杂的逻辑判断或者长时间的进行匹配,程序运行效率较低
  • 需要对调用方隐藏创建方式

JDK中的应用实例

  • dateformat中使用了工厂方式进行创建

    1. Dateformat
    2. private static DateFormat get(int timeStyle, int dateStyle,
    3. int flags, Locale loc) {
    4. if ((flags & 1) != 0) {
    5. if (timeStyle < 0 || timeStyle > 3) {
    6. throw new IllegalArgumentException("Illegal time style " + timeStyle);
    7. }
    8. } else {
    9. timeStyle = -1;
    10. }
    11. if ((flags & 2) != 0) {
    12. if (dateStyle < 0 || dateStyle > 3) {
    13. throw new IllegalArgumentException("Illegal date style " + dateStyle);
    14. }
    15. } else {
    16. dateStyle = -1;
    17. }
    18. LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatProvider.class, loc);
    19. DateFormat dateFormat = get(adapter, timeStyle, dateStyle, loc);
    20. if (dateFormat == null) {
    21. dateFormat = get(LocaleProviderAdapter.forJRE(), timeStyle, dateStyle, loc);
    22. }
    23. return dateFormat;
    24. }
跟着团子学SAP CO:熟练使用结果分析码实现各个场景下收入成本的匹配(一) KKA2/CJ88 PS模块中对财务顾问最难的点在于项目结算,特别是销售型的项目结算。针对客户型项目结算我列举了以下常见的收入成本匹配的一些场景: (1)在项目执行过程中会多次开票,但由于各期成本浮动很大(如前期可能只涉及一些人工、中期全是比较金额较大的材料费),所以希望开票的时候能通过合理的一些指标进行主营业务成本与主营业务收入的匹配。 (2)项目过程中会多次开票,开票确认主营业务收入时,直接将累计发生的实际成本结转为主营业务成本。 (3)项目过程中虽多次开票,但不确认收入,所有发生的实际成本月末计算为在制品,最后项目一次性 阅读详情

相关推荐

华为HCIP大数据备考实战:从题库精析到834分通关策略

本文详细介绍了华为HCIP大数据认证考试的备考策略,包括题库精析、重点章节突破和考场实战经验。作者以834分的高分通过考试,分享了官方教材的三遍阅读法、自建题库技巧以及各章节核心知识点,帮助考生高效备考并顺利通关。

weixin_29169899的博客 150

寻找java中的设计模式--静态工厂模式

代码复用 java.text.DateFormat.getDateInstance()

wobushixiaobailian的博客 451

网站进行企业微信授权登录(附带代码超详细版)

企业微信的扫码登录官方文档 https://work.weixin.qq.com/api/doc/90000/90135/90988 企业微信扫码登录认证流程 上面是官方的图片,看上去比较复杂。因此我用直白简洁的语言梳理下流程。 1、首先在自己的网站上获取到企业微信登录的二维码(二维码怎么获取稍后再说,这里想象下你已经有了一个二维码) 2、你拿着手机扫描二维码,确认登录之后,页面就会自己进行重定向的跳转,跳转的url如何配置下面再讲,但是注意,这个重定向的url可以是内网地址 3、重定向到指

Gzf的博客 1万+

设计模式之简单工厂模式

Simple Factory Pattern: Returns different instances based on different parameters. 简单工厂模式: 简单工厂模式又称为静态工厂方法模式,它是一种类创建型模式。在简单工厂模式中可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 简单工厂模式包含角色...

weixin_34342992的博客 418

SVPWM分析、各个扇区详细计算以及Matlab仿真

SVPWM分析以及各个扇区详细计算以及Matlab仿真说明目的两电平逆变器拓扑空间矢量扇区判断扇区内如何发波?矢量作用时间计算矢量切换时间的计算Simulink仿真/基于Matlab-R2014a版本 说明 第一次发文章,不太会用Markdown,word编辑的公式复制过来有些是乱码,因此都贴图了。 另外,本文公式和图片比较多,编辑工作量比较大,比较辛苦,转载的话,请注明出处,谢谢。 目的 由于在...

michaelf的博客 12万+

MRST开源油藏模拟:从入门到精通的全流程指南

本文全面介绍了MRST开源油藏模拟工具的使用方法,从环境搭建到核心功能实战,再到性能优化和工业级应用。MRST作为一款基于MATLAB的开源工具,为油藏工程师提供了强大的数值模拟能力,特别适合教学和科研场景。文章还分享了二次开发技巧和常见问题解决方案,帮助读者快速掌握油藏模拟技术。

beer8的博客 328

Python列表的地址占用_CodingPark

你看到的相同,未必是真的相同 copy与deepcopy

CodingPark 编程公园 506

2026年数字IC设计紫光展锐笔试带答案解析

本文是一份数字IC设计工程师/芯片验证工程师的笔试样题,包含单选题和多选题两部分。单选题共20题(每题2分),涵盖数字电路、C++/Verilog编程、芯片设计基础等内容,例如D/A转换计算、面向对象编程特性、三极管工作区域、Verilog仿真时间格式等。多选题15题(每题2分),考察Hold违例修复方法、验证方法学等知识点。试卷总分100分,考试时长90分钟,题型设计兼顾基础理论与工程实践,重点测试应聘者对芯片设计核心概念和工具链的掌握程度。部分题目解析详细说明了计算过程或概念原理,如第1题通过二进制转换

Open 111

设计模式在JDK中的运用

今天复习了一下设计模式,也从源码中去寻找了一下设计模式在JDK中的运用。 适配器模式: 核心思想就是将一个接口适配(伪装成)到另一个接口。在Java I/O中运用到了很多适配器模式,例如将字符串数据转变成字节数据保存到文件中或将字节数据转变成流数据等,下面用InputStreamReader 举例。 public class InputStreamReader extends Reader...

puzimengya的博客 792

【目标追踪】python背景模型减除法原理及其实现

python基于背景模型差法的视频目标追踪帧差法的问题:背景模型差法目标追踪原理1. 基本思路:2. 图例讲解:3. 存在的问题&如何解决:4. 最终效果预览第一步——调用摄像头:1. 使用opencv打开视频or摄像头:2. 读取逐帧图片:第二步——处理图片:1. 转换成灰度图:3. 累加权重重构背景:3. 计算像素差:3. 使用中值滤波和膨胀腐蚀去噪:3.1 中值滤波:3.2 图像腐蚀...

梁瑛平的博客 1948

Android 中 app freezer 原理详解(二):S 版本

在之前的两篇博文《Android 中app内存回收优化(一)》和《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理,为什么叫这个名字,而不叫 AppCompact 等?freezer,一个针对应用进程长期处于 Cached 状态的优化。在之前博文《app freezer 原理 R 版本》

私房菜 3611

java从JDK里提取全球数据,包含国家(名称、二字代码、三字代码)、币种(名称和代码)、和语言种类的数据

工具类代码:https://gitee.com/lnkToKing/codes/eom09jrdp8ybf56nu423v77 JDK版本:jdk1.8.0_66 主要需要依赖的类 import sun.util.locale.provider.LocaleProviderAdapter; import sun.util.locale.provider.ResourceBundleBased...

lnkToKing的博客 1万+

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2730

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

目录 定义 为什么要使用工厂模式 模式结构 模式分析 实例 简单工厂模式的优点 简单工厂模式的缺点 适用环境 总结 定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是...

心猿意碼 9489

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

少说,多做 1万+

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

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

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

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

云上道人的博客 569

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

简单工厂模式(C++描述)

一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。 1.静态工厂方法统一管理对象的创建。静态工厂方法通过传入的参数判断决定创建哪一个产品的实例,封装了对象的创建,客户端只管消费,实现了对责任(模块)的分割。2.静态工厂方法推迟了产品的实例化。通过XML配置文件就能改变

一步一步 1万+

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

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

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

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

简单工厂模式 所谓的简单工厂模式-----------这里百度百科里面的解释:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工引用百度厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 简单点说就是一个工厂类根据传入

sundaysunshine的博客 1733

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

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

牛角尖 2442

android 静态工厂方法,Android 源码中的静态工厂方法

我们知道工厂模式有三兄弟,通常我们说的工厂模式指的是工厂方法模式,它的应用频率最高。本篇博客分享的简单工厂模式是工厂方法模式的“小弟”,确切的来讲它不属于设计模式,而是一种方法。此外,工厂方法模式还有一位“大哥”——抽象工厂模式。今天我们来分享一下简单工厂模式的一些情况,以及它在Android源码中的应用。定义简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Metho...

weixin_39616547的博客 138

设计模式-简单工厂模式/静态工厂方法(Static Factory Method)

定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工

Robert学习分享 2395
上一篇: SSL链接一个很奇怪的错误
下一篇: Tomcat证书配置
MTU_X79
博客等级 码龄15年 4粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值