zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式

    工厂模式基本上就是最常用到的模式。

    工厂模式有3种,简单工厂,工厂,抽象工厂。

    找到一篇文章,3种模式的类图可以参考

    http://www.cnblogs.com/toutou/p/4899388.html

    简单工厂模式点评:

    假如一个业务逻辑,要根据一个类型做不同的操作的时候,就需要用简单工厂模式来把if else干掉。

    简单工厂模式符合单一职责模式。

    但是每需要增加一种类型的时候,就要改工厂类的代码,所以简单工厂模式不符合封闭开放原则。

    实际工作中,

    常配合策略模式一起使用,使用策略模式封装工厂中的逻辑。

    常使用反射和配置文件来消除简单工厂中具体实例那一个实现类的逻辑。

    工厂模式点评:

    工厂模式抽象出一个工厂接口,在客户端需要那个工厂就用那个工厂来实现这个接口。

    所以以后再新加功能的时候,只要再增加一个实现类就好了,不需要改工厂代码。

    工厂模式符合依赖倒转原则,符合封闭开放原则,符合单一职责原则。

    但是把使用哪一个工厂的权利交给了客户端。

    实际工作中,会利用反射+配置文件消除这个缺点。

    抽象工厂模式点评 :

    所有工厂模式最面向对象的,产品有产品接口,工厂有工厂接口。 

    如果要增加一个功能,要增加一个抽象产品及n个实现,要还要修改抽象工厂,以及所有的工厂实现类。

    这就造成了对增加开放,对修改也开放,违反了封闭开放原则。

    比如你的项目既要支持mysql又要支持oracle,此场景适用抽象工厂模式。

    我是这么理解的

    1 工厂模式是抽象工厂的简版,简单工厂模式是工厂的简版,也可以反过来说,工厂模式是简单工厂的进一步抽象,抽象工厂是工厂的进一步抽象

    2 纯以封闭开放原则的角度讲,工厂模式胜出了。

  • 相关阅读:
    vs code 使用小技巧
    数组22组合
    js--arTemplate引擎
    JAVA -简要记录maven的安装与环境变量的配置
    JAVA -简要记录jdk的安装与环境变量的配置
    浅谈“复制粘贴”对于程序员的伤害
    C#中 IndexOf的使用
    C# Substring函数的总结
    C# 还原Nuget包失败的解决方法
    C# 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)解决方案
  • 原文地址:https://www.cnblogs.com/hmdrzql/p/7511107.html
Copyright © 2011-2022 走看看