我是靠谱客的博主 奋斗信封,最近开发中收集的这篇文章主要介绍简单工厂模式理解以及使用简单工厂模式理解以及使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简单工厂模式理解以及使用

工厂模式概念

定义

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

定义中最重要的一句话就是:专门定义一个目标类来负责创建其他类的实例

简单工厂模式只有一个接口

个人理解

简单工厂模式就像是顾客、服务员、厨师三者之间的关系:
不用简单工厂模式时是顾客直接找厨师下单点菜,意味着我们的代码耦合出现严重问题,不利于以后的维护,试想顾客点餐需要与后厨大厨直接接触,这肯定是一个不好的体验;
用了工厂模式后相当于饭店招了一个服务员,顾客通过服务员来下单点菜,这样降低了耦合性,方便流程的正常运行.

简单工厂模式实际应用

需求背景

在扭转代言人培训课后练习动作状态时,动作需要通过获得es中匹配的动作字段来扭转

场景一:动作在es中有相匹配的字段

场景二:动作在es中没有相匹配的字段

场景三:动作在es中有匹配的字段,但是需要特殊逻辑扭转

设计初心

因为有三种不同的业务逻辑,为了优化代码结构,选择使用工厂模式来实现

实际应用

  1. 代码结构
    在这里插入图片描述

    解释:SpokesPracticeProcessFactory是创建的工厂类,ISpokesPracticeProcessService是创建的业务逻辑接口,三个实现类是不同场景下的业务逻辑方法,SpokesCourseService是主逻辑Service.

    工厂类:
    在这里插入图片描述

    业务逻辑接口:

在这里插入图片描述

场景一,代言人课后练习es中有相关动作状态情况:
在这里插入图片描述

场景二,代言人课后练习es中无相关动作状态情况:
在这里插入图片描述

场景三,代言人课后练习es有相关动作状态做不同区分情况(认领圈子):
在这里插入图片描述

Service中调用不同情境的业务代码方法:
在这里插入图片描述

  1. 程序运行流程:
4. ISpokesPracticeProcessService service =spokesPracticeProcessFactory.getService(actionFiled);
先传入动作属性actionFiled调用工厂类的 public ISpokesPracticeProcessService getService(String source)方法,然后调用spokesPracticeProcessService.support(source)方法,通过方法里的逻辑来匹配决定调用哪个场景的实现类
5. service.handlerSpokesPracticeStatus(userNo, actionFiled, processAssociateId);
然后在调用实现类的具体逻辑方法即可

简单工厂模式优缺点

1、优点:
工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅"消费"产品。简单工厂模式通过这种做法实现了对责任的分割。

2、缺点:

当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的缺点。因为工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。

系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂,违背了"开放–封闭"原则(OCP)。另外,简单工厂模式通常使用静态工厂方法,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结构。

最后

以上就是奋斗信封为你收集整理的简单工厂模式理解以及使用简单工厂模式理解以及使用的全部内容,希望文章能够帮你解决简单工厂模式理解以及使用简单工厂模式理解以及使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部