美文网首页设计模式技术问题
简单工厂+工厂方法+抽象工厂

简单工厂+工厂方法+抽象工厂

作者: 每周报 | 来源:发表于2016-05-14 15:02 被阅读857次

学不可以已!

在这之前也有接触到过设计模式、只是之前的项目没有讲究过多的架构、故而一直都没有去深究设计模式。到目前接触到的语言也有几种、用的比较多的就是C# and Objective-C 。项目做多了自然就发现有些东西是可以简化或者是优化、便于应用的扩展。
先来温习一些之前经常为提到但是没有经常使用的设计模式。

1. 简单工厂

概念:说的通俗些就是工厂根据不同的参数创建对应的产品。
例如:有个简单工厂是负责计算的 我传一个加号就返回一个算加法的计算器、我传一个减号就返回一个算减法的计算器。

SimpleFactory.png

该设计模式如果要增加产品,必须修改工厂方法才能实现。是一个工厂可以生产多个产品(一对多)。
如果只从面向对象的角度考虑、简单工厂其实就是一个组合类、只要需要就可以将一个产品组合到简单工厂中甚至都可以不用抽象产品。
所以严格的讲我到觉得简单工厂不应该用到抽象或者接口的概念、符合简单一词。

2. 工厂方法

概念:工厂方法有别于简单工厂却是简单工厂的升级。
不同之处、简单工厂是通过参数来控制产品的生产、这里使用的是重载。不同的工厂实现同一个工厂方法生产不同的产品。
、是一个工厂生产一个产品(一对一)。如需增加产品、首先要增加工厂。是一对一的生产模式。
例如:还是一个抽象工厂是负责计算的。如果需要生产一个计算加法的计算器、首先就要有一个只生产加法计算器的工厂。
如果要生产一个计算减法的计算器、就要有一个生产减法计算器的工厂。

FactoryMethod.png

如图: 工厂A 负责生产的是产品A ,工厂B负责生产产品B,
从面向对象的角度看我们发现工厂方法就是一个重载。

3.抽象工厂

概念:说的明白些抽象工厂就是 简单工厂+工厂方法。

AbstractFactory.png

在简单工厂中根据参数创建对应的产品,在抽象工厂中变成了根据不同的实例方法来实现。
在工厂方法中不同的动作放在不同的产品中执行、在抽象工厂中变成了不同的动作在同一个产品中去实现。

总结

从对象关系的角度看:

  1. 简单工厂是一对多的关系 (一个工厂可以生成多个产品)
  2. 工厂方法是一对一的关系(一个工厂只能生产一个产品)
  3. 抽象工厂抽象了前面两个设计模式、(一生产线可以生产多个产品可以、多个生产线可以生产一个产品)
    而这三个设计模式的出发点是工厂的作用、更多是扩展性演变而来。产品的抽象主要是一些列的行为和属性,工厂的抽象才设计的关键。再简单些概括就是是组合。源代码

相关文章

  • 工厂模式

    简单工厂 —— 工厂方法 —— 抽象工厂 简单工厂: 静态(工厂方法) : 创建一个对象。工厂方法: 动态: 基于...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 设计模式(3) 抽象工厂模式

    抽象工厂模式 优化抽象工厂 异步工厂 在学习抽象工厂模式前,先来回顾一下前面的简单工厂和工厂方法模式。简单工厂的职...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 工厂方法(Factory Method)

    工厂方法 一般情况下,工厂模式分为:简单工厂、工厂方法和抽象工厂。 简单工厂模式(Simple Factory) ...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 工厂模式

    工厂模式 工厂模式分为 简单(静态)工厂 工厂方法 抽象工厂 下面分别介绍这几总工厂模式 简单工厂 (静态工厂) ...

  • 工厂模式(工厂方法模式和抽象工厂模式)

    1.简单工厂: 简单工厂不属于23种设计模式的一种,他是工厂方法和抽象工厂的基础,工厂方法和抽象是简单工厂的演进。...

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

网友评论

    本文标题:简单工厂+工厂方法+抽象工厂

    本文链接:https://www.haomeiwen.com/subject/evfmrttx.html