工厂模式个人案例

我有一份工作来检查我们的项目代码质量。 如果我在项目中发现任何障碍,必须将其报告给我的团队负责人。 我发现了很多漏洞,我认为可以在博客上进行讨论。 不是嘲笑作者,而是一起学习和改进自己。

像这段代码一样,这是我在我们的代码中找到的部分。

public ContactInfoBean(final Reseller resellerInfo) {switch(resellerInfo.getType()) {case PROGRAM_CONTACT:readExecutiveInfo(resellerInfo);break;case FILE_CONTACT:readOperationalInfo(resellerInfo);break;default:break;}}

该代码可以正常工作,并且可以很好地完成工作。 但是使用此代码样式会出现一些问题。 此类将随着业务的变化而增长,与往常一样,较大的级别是维持这种状态的“商户”。 最有可能具有上述目的的这一类称为低内聚性。

更好的面向对象的方法

对于上述情况,更好的方法是使用“工厂设计模式”。 我们可以让READER的工厂根据其类型生成每个实例。 扩展实例类型会更容易,因为我们只需要创建一个新类并在Factory类中进行一些修改即可。 呼叫者类别不会增长,并且将保持现状。

public interface InfoReader {public void readInfo();}
public class ExecutiveReader implements InfoReader {public void readInfo() {// override}}
public class OperationalReader implements InfoReader {public void readInfo() {// override}}

和工厂

public class InfoReaderFactory {private static final int PROGRAM_CONTACT = 1;private static final int FILE_CONTACT = 2;public static InfoReader getInstance(Reseller resellerInfo) {InfoReader instance = null;switch (resellerInfo.getType()) {case PROGRAM_CONTACT:instance = new ExecutiveReader();break;case FILE_CONTACT:instance = new OperationalReader();break;default:throw new IllegalArgumentException('Unknown Reseller');}return instance;}}

现在,来电者

InfoReader reader = InfoReaderFactory.getInstance(resellerInfo);reader.readInfo();

好处

使用Factory Design Pattern处理这种情况,我们可以获得一些好处,

  • 为一个任务指定一个类别意味着更容易维护,因为一个类别仅用于一个目的(模块化/高内聚性)。 即:Operational Reader仅用于操作目的而无其他目的读取数据。 以防万一,在将来的一天中,我们需要另一台Reader(例如:NonOperationalReader)。 我们只需要创建一个扩展(或实现)InfoReader类的新类,然后就可以覆盖我们自己的readInfo()函数。 此类Caller类不会产生任何影响。 我们只需要在Factory代码中进行一些修改即可。
public class InfoReaderFactory {private static final int PROGRAM_CONTACT = 1;private static final int FILE_CONTACT = 2;private static final int NEW_READER = 3;public static InfoReader getInstance(ResellerInfo resellerInfo) {InfoReader instance = null;switch (resellerInfo.getType()) {case PROGRAM_CONTACT:instance = new ExecutiveReader();break;case FILE_CONTACT:instance = new OperationalReader();break;case NEW_READER:instance = new NonOperationalReader();break;default:throw new IllegalArgumentException('Unknown Reseller');}return instance;}}
  • 父级组件的更高可重用性(继承):由于我们有父类(InfoReader),因此可以将公共函数和事物放入此InfoReader类中,以后所有派生类(ExecutiveReader和OperationalReader)都可以重用InfoReader的公共组件。 避免代码冗余,并可以最大程度地减少编码时间。 即使这取决于您如何执行代码,也无法保证。

但是,它运行得很好,我们应该更改它吗?

显然,答案是否定的。 这只是案例研究,仅供您进一步的经验和知识。 OOP很好,可以在任何适用的地方进行。 但是最重​​要的是,如果它正在运行,请不要更改它。 如果您为了追求某种OOP方法而破坏了整个工作代码,那将是荒谬的。 也不要天真,没有人可以实现完美的代码。 最重要的是我们知道什么是更好的方法。

参考: 案例研究: JCG合作伙伴 Ronald Djunaedi在Naming Exception博客上的工厂设计模式 。

翻译自: https://www.javacodegeeks.com/2012/10/factory-design-pattern-case-study.html

工厂模式个人案例

工厂模式个人案例_工厂设计模式案例研究相关推荐

  1. python工厂模式 简书_[Python设计模式] 01 - 简单工厂模式

    设计模式的目的是让代码易维护.易扩展,不能为了模式而模式,因此一个简单的工具脚本是不需要用到任何模式的. 简单工厂模式又叫静态工厂方法模式,工厂模式家族中最简单的一种模式.这个模式的基本工作方式: 通 ...

  2. java 工厂模式的写法_[java设计模式] 工厂模式解析

    什么是工厂模式? 我的总结是: 遵守软件设计中的开闭原则和依赖反转原则, 并且客户端只需通过参数来创造多个对象, 并且在创建过程中,创建对象的过程对客户端是透明的. 这种开发模式叫做工厂模式. 出现原 ...

  3. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  4. python工厂模式 简书_工厂

    思考题 public void printMenu() { PancakeHouseMenu pancakeHouseMenu = new PancakeHouseMenu(); ArrayList ...

  5. python工厂模式 简书_工厂模式

    什么是工厂设计模式? 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,专门用来生产对象.在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如 ...

  6. java工厂模式式代码_简单工厂模式及其简单Java案例代码实现

    说明:本文是<大话设计模式>的学习记录及结合网上相关信息编写,原书代码例子采用C#编写,本文采用Java稍加改写.若有不当,欢迎指正,共同进步.java 1.简单工厂模式概述:设计模式 简 ...

  7. 抽象工厂模式 java实例 tclhaier_Unity常用的设计模式_工厂模式系列之抽象工厂模式...

    在工厂方法模式中,工厂只负责生产具体的产品,每一个具体的工厂对应着一个具体的产品,工厂方法也具有唯一性,如果有时候我们需要一个工厂方法提供多个产品而不是一个单一的产品,例如:海尔品牌不止生产海尔TV, ...

  8. 策略模式和工厂模式的区别_设计模式之工厂模式-工厂方法模式

    设计模式之工厂模式-工厂方法模式 大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目. 来源:凯哥Java(kaigejava) 需求: 披萨项目: 要方便披萨品种的扩展.要便于维护.要 ...

  9. 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象

    文章目录 案例:外设店铺 简单工厂 工厂方法 抽象工厂 总结 要点 三类工厂模式的特点 三种工厂模式的适用场景 完整代码与文档 工厂模式模式是创建型模式中较为常用的一个,它并不是一个模式,而是三种功能 ...

  10. 设计模式学习笔记(三)工厂模式中的简单工厂、工厂方法和抽象工厂模式之间的区别

    设计模式中的工厂模式(Factory Design pattern)是一个比较常用的创建型设计模式,其中可以细分为三种:简单工厂(Simple Factory).工厂方法(Factory Method ...

最新文章

  1. HALCON示例程序autobahn高速公路车道识别程序剖析
  2. 工业相机选型_工业相机与镜头的选型方法
  3. MFC---CComboBox控件添加字符串函数InsertString
  4. Deep Learning for NLP Best Practices
  5. JavaCore HeapDump
  6. UTM坐标转GPS方法分享
  7. OFD文件结构--OFD.xml
  8. Java 读取Doc/Docx 文档
  9. C++ 批量修改文件名
  10. 企业级需求管理工具选型报告(2020年3月20日)
  11. 利用python和递归实现赶鸭子问题
  12. #第二章 数理文化的起源2.1文化概述
  13. MapReduce最佳成绩统计,男生女生比比看
  14. 电脑如何调整分辨率大小查看网页
  15. 精美个人导航引导页html源码
  16. 【C语言】输入矩形的长和宽,计算该矩形的面积
  17. c语言eof_C语言持续深耕
  18. 最新kali之swaks
  19. Ubuntu Linux 3D桌面完全教程 Ubuntu Linux 3D桌面完全教程
  20. 计算机网络之无线与移动网络-移动IP网络与其他典型无线网络

热门文章

  1. Java线程池,从使用到原理
  2. mysql id生成器自定义_MybatisPlus使用自定义Id生成器数据自动填充
  3. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案
  4. 2-6 基于SpringBoot的SpringSecurity环境快速搭建与验证
  5. rabbitmq-路由模式-routingkey
  6. 最小生成树——Kruskal(克鲁斯卡尔)算法
  7. 不相交集合求并的路径压缩
  8. MySQL日志:binlog、事务日志(redo、undo)
  9. spring框架三层架构_Spring框架架构
  10. groovy lambda_Java Lambda流和Groovy Clouse的比较