java工厂设计模式详解 java和python的区别

序今天就和朋友们分享一下设计模式中的工厂模式。首先,工厂模式众所周知,设计模式有23种,根据功能和使用场景可以分为三类:创建型模式结构型模式行为型模式工厂模式是一种很常见的设计模式,属于创意模式,主要功能是创建对象~示意图我们先来看一个小栗子。二。工厂方法模式...

今天就和朋友们分享一下设计模式中的工厂模式

首先,工厂模式

众所周知,设计模式有23种,根据功能和使用场景可以分为三类:

创建型模式结构型模式行为型模式

工厂模式是一种很常见的设计模式,属于创意模式,主要功能是创建对象~

示意图

我们先来看一个小栗子。

二。工厂方法模式(非23种)

示意图

比如有很多感觉,比如各种品牌的电脑,定位器,家具...

例如膝上型计算机。

提取公共接口

只有一个界面返回品牌。

public inte***ce ILaptop { String brand();}1.2.3.

接口类

这里只是两个例子~

public class HuaWeiLaptop implements ILaptop{ @Override public String brand() { return "HuaWei"; }}?public class MacLaptop implements ILaptop { @Override public String brand() { return "Mac"; }}1.2.3.4.5.6.7.8.9.10.11.12.13.

工厂级

最重要的是这个工厂类。我们将赋予它创建对象的能力~

public class LaptopFactory {? public static ILaptop createLaptop(String brand){ switch (brand){ case "HuaWei": return new HuaWeiLaptop(); case "Mac": return new MacLaptop(); default: return null; } }}1.2.3.4.5.6.7.8.9.10.11.12.13.

试验

就这样,我们简单的完成了一个工厂模式的应用~。创建对象后,我们可以直接调用工厂方法

public class LaptopMain { public static void ***in(String[] args) { ILaptop hw = LaptopFactory.createLaptop("HuaWei"); String brand = hw.brand(); System.out.println(brand); }}1.2.3.4.5.6.7.

当然,这是工厂模式最简单的例子,也称为工厂方法模式

当然,这个有明显的缺点,所以我们来看看这个工厂方法模式

三、工厂法模式

示意图

想想简单的工厂编写,把创建对象的所有操作都封装在一个工厂里是不合理的,要进一步解耦。

工厂公共接口的提取

public inte***ce ILaptopFactory { ILaptop createLaptop();}1.2.3.

工厂实现类

public class HuaweiLaptopFactory implements ILaptopFactory{ @Override public ILaptop createLaptop() { return new HuaWeiLaptop(); }}1.2.3.4.5.6.

试验

只需更改上面测试用例的前两句话。

HuaweiLaptopFactory huaweiLaptopFactory = new HuaweiLaptopFactory(); ILaptop ***c = huaweiLaptopFactory.createLaptop();1.2.

完成这个工厂模型是不是很简单?

四。抽象工厂

示意图

嗯,工厂肯定不止一条生产线,肯定还有其他业务,比如定位器等电器。

所以我们重复上面的笔记本产品的例子,构建一些其他的类,然后通过工厂类来创建。

抽象工厂

首先定义一个抽象工厂。

public abstract class AbstractFactory { public abstract IPhone createPhone(); public abstract ILaptop createLaptop();}1.2.3.4.

工厂实现类

只有一个了~

public class HuaweiFactory extends AbstractFactory{ @Override public IPhone createPhone() { return new HuaWeiPhone(); }? @Override public ILaptop createLaptop() { return new HuaWeiLaptop(); }}1.2.3.4.5.6.7.8.9.10.11.

动词 (verb的缩写)摘要

在使用工厂模式时,我们可以从简单工厂(不是23种)——“工厂方法中找到抽象工厂

这是一个不断

扩展和解耦

的过程,我们可以在项目类别中根据需要进行选择~

比如产品多,选择抽象工厂;如果有单品,就用工厂或者简单的工厂。

到目前为止,我们知道工厂模式属于23种设计模式中的

创意模式

,其主要目的是

创建对象

,方便程序解耦。

接下来,我们来思考一下Spring和

工厂模式

的关系

说到这里,你想到了什么?

不知道就说工厂工厂工厂哈哈哈~

你脑子里是不是突然看到这两个货了?

BeanFactoryFactoryBean

从名字可以看出这两个商品和工厂有关系(分别通过getBean和getObject获取对象)

那我们先介绍一下。

不及物动词豆制品厂

源代码的第一句话

用于访问spring bean容器的根接口。(IOC的根接口)

可以发现它是

的一个非常核心的组件。

遵循严格的生命周期

可以发现,通过BeanFactory创建一个Bean要经历一个非常严格的过程,这个过程是繁琐的。

方法

方法有很多,比如获取别名、类型、单件、原型等。

通过getBean获取对象。

主要功能

根据BeanDefinition生成相应的Bean对象。

七。接口

源代码

可以发现,只有三条路,小厂

通过getObject方法返回一个对象。

获取对象时:

如果 beanName 没有加 & 号,则获取的是

泛型T

的对象。如果添加了 & 号,获取的是实现了 FactoryBean 接口本身的对象,如 EhCacheFactoryBean

因为体积小,所以在

Spring

中,以及在

Spring与第三方框架或组件

集成的过程中也被广泛使用。

八。BeanFactory和FactoryBean有什么区别?

BeanFactory 是一个大工厂,是IOC容器的根基,有繁琐的 bean 生命周期处理过程,可以生成出各种各样的 BeanFactoryBean 是一个小工厂,它自己也是一个 Bean ,但是可以生成其他 Bean?

最后一个问题

九、春季工厂模式的使用

既然都和工厂有关,那就挑个软柿子捏吧。

工厂Bean工厂模式图

可以发现,和我们上面介绍的工厂方法模式一样,公共接口和不同的实现类都可以通过特定的工厂获取对象。

BeanFactory也差不多,就不画了。

X.摘要

画张图总结一下

最后

Spring相关信息:

春季笔记-176页知识核心整理[/S2/]

另外还整理了40多个Redis的PDF文档:全套Java访谈书,7个访谈栏目“性能调优+微服务架构+并发编程+开源框架+分布式”,包括Tomcat、JVM、MySQL、SpringCloud、SpringBoot、Dubbo、Concurrent、Spring、SpringMVC、MyBatis、Zookeeper、Ngnix、Kafka等。如果你对此感兴趣,边肖可以免费分享。

本文来自离开我后记得微笑投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/600899.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 06-21
下一篇 06-21

相关推荐

  • java项目开发案例经典 java初学者简易小程序

    项目–吃货联盟一、项目准备:1.开发环境:JDK1.8IntelliJ IDEA2.技术要点分析:能理解程序基本概念 – 程序会使用变量、数据类型会使用顺序、选择、循环、跳转语句编写程序会使用数组3.任务描述:只要动动手指,就能送餐上门。“网上订餐受到现代人的青睐。现在,开发了一个

    2023-07-28 08:47:01
    708 0
  • java创建数组的几种方式 java编写图形界面程序

    数组是一组具有相同数据类型的数据。作为对象,new关键字允许用于内存分配。首先,熟悉一维数组的创建和使用。有两种方法可以声明一维数组:元素类型数组名称[];元素类型[]数组名称;元素类型决定数组的数据类型,在java中可以是任意数据类型,声明一个一维数组,比如int arr

    2023-07-27 04:07:01
    981 0
  • 如何安装java运行环境 java环境配置教程

    手动安装可以让用户更好地控制Java运行时环境。使用Linux发行版的包管理工具很容易安装Java包。但是,有时候需要手动安装Java。这对于Tomcat或JBoss等基于Java的应用服务器的管理员来说尤其重要。许多开源和专有软件产品依赖于这些服务。还是开发人员运行时套件?Java虚拟机(

    2023-07-26 08:27:01
    539 0
  • java是什么软件有什么作用 深入解析Java编程语言

    很多人或多或少和我一样。当我偶然在电视上看到程序员往电脑里敲一串代码的时候,我会忍不住惊叹他们,想象自己有一天也能这样。是的,有一天你也可以这样做!我们来看看到底什么是J***A?为什么学习?学习有什么用?让我给你看看2009年的计算机语言排名1。什么是JavaJava是一

    2023-07-26 04:56:01
    150 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信