首页 > 其他分享 >【设计模式之三工厂】

【设计模式之三工厂】

时间:2022-10-17 18:05:58浏览次数:58  
标签:定义 之三 工厂 实例 抽象 苹果 设计模式


前言:

本文中所讲解的三工厂指的是简单工厂,工厂方法,抽象工厂设计模式,在大话设计模式中,三个工厂最后以三姐妹的身份出现在比赛现场中,本文中将三个工厂联系起来进行学习。

内容:

(一)简单工厂模式

1.定义


用一个单独的类来创造实例的过程,这是工厂的定义。那么简单工厂是由一个工厂对象决定创建出哪一种产品类的实例。它的实质就是根据工厂类传入的参数决定实例化那个对象。当你需要什么,只需传入一个正确的参数,就可以获取需要的对象,而无需知道其创建的细节。


2、eg


当你想吃苹果,只需到超市去买,而无需知道果园是如何生产出苹果的,那么果园就相当于一个工厂。


3.UML图


【设计模式之三工厂】_三工厂


(二)工厂方法

1.定义


定义一个用于创建的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。工厂方法定义了一个抽象工厂,抽象工厂的下面有多个子类工厂,故延迟到子类指的是子类工厂。


2.eg


我现在想吃苹果和黄瓜,那么我需要去水果店和蔬菜店,这时需要定义一个抽象工厂,食物工厂,下面定义具体的水果工厂和蔬菜工厂,进而实例化类。


3.UML图


(三)、抽象工厂

1.定义


提供创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类


这里对象指的是一系列,比如书中的例子指的是SqlServer和Access属于同一系列的两个不同的对象,比如同样是苹果,有苹果干、水果、苹果罐头等等,这时需要考虑抽象工厂模式。


2.eg


我想吃苹果系列的,苹果干、苹果罐头、新鲜的苹果等等,这时需要的抽象工厂提供给我干果店、水果店、超市。这就是抽象工厂使用的场合。


3.UML图


【设计模式之三工厂】_抽象工厂_02


(四)三工厂之比较


工厂方法是简单工厂模式的进一步抽象和推广,抽象工厂是工厂方法的升级版




【设计模式之三工厂】_对比_03



总结:

简单工厂设计模式违背了开放-封闭原则,也是最简单的设计模式,所以不属于二十三个设计模式之列,工厂方法设计模式克服了简单工厂的缺点,保持了其优点,抽象工厂设计模式适合提供一个创建一系列相关或相互依赖对象的接口,抽象工厂设计模式也有自己的不足,用反射+抽象工厂,用反射+配置文件,弥补自己的不足。三个工厂,更需在实践中体会。

标签:定义,之三,工厂,实例,抽象,苹果,设计模式
From: https://blog.51cto.com/u_15586641/5763782

相关文章

  • 【设计模式之代理模式】
    前言:今天我们学习的模式为代理模式,见名字如见该模式,代理模式,则提供一个代理,由代理对对象进行访问,暂时先这么理解!通过接下来的学习,大家肯定会对代理模式有一个全面的了解。......
  • 【设计模式之装饰模式】
    前言:装饰模式,属于二十三个设计模式中之一,那么,什么是装饰模式,下面,大家请跟着我一起走进装饰模式,来看看装饰模式:核心:(一)、结构图想知道设计模式吗?那么看了它的UML图,你就一目......
  • 【设计模式之策略模式】
    前言:最近在学习设计模式,简单工厂是接触的第一个模式,后来,就遇到了策略模式,策略模式真是有谋略啊!定义了算法家族,有了算法家族,再难的计算都不在话下了!!!今天,我们一起来学习策略......
  • 12-Go设计模式-观察模式
    观察模式样例代码/*观察者模式观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生......
  • 你还在写垃圾代码?快用 Java 8 重构传统设计模式吧,是真的优雅!
    来源:https://www.cnblogs.com/yjmyzz/p/refactor-design-pattern-using-java8.htmljava8中提供的很多新特性可以用来重构传统设计模式中的写法,下面是一些示例:一、策略模......
  • 10-Go设计模式-命令模式
    命令模式样例代码/*命令模式将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种......
  • Winform 窗体重命名(改名)后,设计模式对窗体的任何修改都无效,执行结果为改名前的窗体(一个
    (如图)1.新建Winform窗体应用程序  2.窗体设计器不关闭,直接改名 3.设计窗体 4.运行程序,结果(窗体空白) 5.解决方案   5.1丢弃设计,直接关闭设计窗体,重新......
  • 智慧工厂和数字化车间的区别、联系是什么?
    智慧工厂和数字化车间本质上没有区别吧,只是提法不同而已,其本质都是工厂数字化工厂,如果非的说有区别,那也只是层级不同,一个是工厂级别,一个是车间级别。无论是智慧工厂还是数字......
  • 数字化工厂的功能架构是怎样的?
    数字化工厂实质上就是物理形式的工厂在数字空间的投射,并基于此来实现的以人机物(Human,Machines,Things)泛在互联为基础上,深度感知为支撑,智能决策为导向,精准管控为目的的细胞元......
  • 工厂数字化转型离不开 MES 的原因是什么?
    工厂数字化转型是离不开MES,首先得弄清楚什么是工厂数字化转型、什么是MES,它们的关系是怎样的。数字化的主要含义是构建“业务数字化、数字资产化、资产服务化、服务业务化......