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

设计模式之工厂设计模式

时间:2022-12-13 10:56:03浏览次数:33  
标签:自定义 模式 工厂 Computer 设计模式 方法

1.开发环境

  • IDEA版本: 2022.1.4
  • JDK版本:17.0.3

 

2.模式由来

2.1 自定义MailSender类

2.2 自定义Computer类

2.3 分析图

2.4 案例分析

  • 由于Computer类和MailSender类之间的耦合度比较高,而且创建对象的代码太固定了,若希望使用短信发送的功能需要修改Computer类,这种修改违背了开闭原则,为了解决该问题,就可以将创建对象的工作移交出去,而工厂设计模式就是一种创建对象的设计模式,而且可以在创建对象时不对外暴露具体的创建逻辑。

 

3 普通工厂方法模式

3.1 基本概念

  • 普通工厂方法模式就是建立一个工厂类,通过生产方法的参数来进行具体实例的创建。

3.2 自定义Sender接口

3.3 修改MailSender类

3.4 自定义SmsSender类

3.5 自定义SendFactory类

3.6 修改Computer类

3.7 分析图

3.8 案例分析

  • 在普通工厂方法模式中,若传递的字符串出错,则不能正确创建对象,而且可能出现空指针异常,所以容错率不高。

 

4.多个工厂方法模式

4.1 基本概念

  • 多个工厂方法模式就是通过多个不同的生产方法对实现同一接口的不同实现类分别进行对象的创建。

4.2 修改SendFactory类

4.3 修改Computer类

4.4 分析图

4.5 案例分析

  • 在多个工厂方法模式中,为了能够正确创建对象,需要先创建工厂类的对象才能调用工厂类中的生产方法。

 

5.静态工厂方法模式

5.1 基本概念

  • 静态工厂方法模式就是将多个不同的生产方法加上static关键字提升为类层级,此时只需要通过类名.的方式就可以进行方法的调用,从而进行不同实例的创建。

5.2 修改SendFactory类

5.3 修改Computer类

5.4 分析图

5.5 案例分析

  • 静态工厂方法模式中类的创建依赖工厂类,如果想要扩展程序来生产新的产品,就必须对工厂类的代码进行修改,这就违背了开闭原则。

 

6.抽象工厂模式

6.1 基本概念

  • 抽象工厂模式就是将多个不同的生产方法放在不同的工厂类中,让多个工厂类实现同一个接口,此时只需要通过不同的工厂类就可以进行不同实例的创建。

6.2 自定义SendFactory接口

6.3 自定义MailSendFactory类

6.4 自定义SmsSendFactory类

6.5 修改Computer类

6.6 分析图

6.7 案例分析

  • 现在想要拓展程序生产新的产品,就只需要增加新的工厂类即可,不用违背开闭原则,同时每个工厂类对应一个产品,符合单一职责的原则。

 

更多精彩欢迎关注微信公众号《格子衫007》!

标签:自定义,模式,工厂,Computer,设计模式,方法
From: https://www.cnblogs.com/gezishan007/p/16977899.html

相关文章

  • 设计模式-策略模式
    设计模式-策略模式  代码写作过程中,设计模式是对某些固定场景代码写作的总结和优化,最常见的设计模式,除了单例模式外,还有工厂模式和策略模式。 工厂模式是一种创建型......
  • MongoDB - 数据模型的设计模式
    简介官方文章的地址是BuildingwithPatterns:ASummary,其中汇总了12种设计模式及使用场景。上述的图表列举了12种设计模式及应用场景,主要是以下这些:近似值模式......
  • 工厂方法模式在开发中的应用
    事件是这样的,我的每个页面都有一些属性,我拿其中一个属性PageTitle为例,它是一个ArrayList它是页面标题导航的意思,就是说它的标题用来存储一些标题导航,比如,产品列表页,它的Page......
  • 当你使用LINQ做底层时,最好设计一个工厂,不要把LINQ的动作暴露给业务层
    1:usingSystem;2:usingSystem.Collections.Generic;3:usingSystem.Linq;4:usingSystem.Text;5:usingSystem.Data.Linq;6:usingSystem.Threading;......
  • 前端_js设计模式
    什么是设计模式1.什么是设计模式设计模式是前人总结出的,解决开发中某类问题的方法;我们在过去的代码编写中已经接触过很多的设计模式了,只不过当时咱们不知道这就......
  • c#设计模式之原型模式
    原文网址:https://blog.csdn.net/FireworksFlower/article/details/121728335官方:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象我的话:原型模式:......
  • 设计模式: 抽象工厂模式练习
    packagemainimport"fmt"funcmain(){ baseWindow:=NewBase(&Windows{}) fmt.Println(baseWindow.Opt.Jump()) baseWindow.Inter.Color() baseAnd:=NewBas......
  • 设计模式之访问者模式
    概述访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操......
  • go设计模式之行为型模式
    行为模式解决什么问题行为型模式关注对象之间的通信和职责委派。下面介绍go中比较常用的3种设计模式分别是策略模式,模版模式,观察者模式。1.策略模式策略模式将一组行为分......
  • 反射、工厂模式、IOC容器浅尝 一篇入门
    反射什么是反射?个人目前理解:反射是在程序运行期间获取class信息,用这些信息做一些操作,例如本文后续要用的实例化一个对象以及为属性赋值。如何获取class信息调用对象的......