我是架构师-设计模式-工厂模式–抽象工厂和工厂方法区别

上次说到简单工厂模式,然后作为简单工厂的扩展,主要是抽象工厂和工厂方法

一般的UML工具图都会提供一些现成的模板,只需要导入就可以了,香港虚拟主机,我用的startUML,来看看例子:

抽象工厂模式:

工厂方法模式:

我第一接触设计模式的时候,第一反应是:天呢!这是什么啊!这些人太无聊了!这有什么用啊?有啥区别呢?

呵呵,不得不承认如果传递知识,过于只言片语确实存在过多的沟通噪音,甚至成了学习者的障碍物。

下面,我对以上两个图做些改动,至少,先区别一下抽象工厂和工厂方法。

用一个比较现实的例子:

抽象工厂:

工厂方法:

上面的例子多少有些不太合理,但为了吸引您的兴趣,就适当采取点变通方式,但道理是一样的。

解读:

对比两幅图

1. 都包含了简单工厂模式

2. 两幅图,都把工厂放在了图的左侧

抽象工厂:Abstractfactory

工厂方法:Ctreaor

3. 产品对应

抽象工厂: 每一个工厂的一个方面可以产出一个类型的产品,如 非本地Fa ,只买房子,香港服务器,不买车是没问题的。(其中注释上税5年,是刚好买车和买房都是5年,不一定要相同条件)

工厂方法: 每个工厂,免备案空间,可以实现多个某种类型的多个产品,如 非本地人Fa, 要安家,是一定要买房,买车,才算安家了。只不过他们划分出你是否纳税5年了还是新来的安家。

4.少许问题

工厂方法中,有点偏差, 不过可以按照级别分。例如:

本地一级:本土

本地二级:仅有户口

非本地一级:5年以上

非本地二级:刚来的

我想表达的意思是,这个层级最好相同,便于调用。

简述两者的应用场景

工厂方法和抽象工厂都是应用级别比较大型的系统中,本身基于简单工厂,所以大多数情况下也是面向客户端和服务端的方式调用。

明天又要面试了。。改天再写两者的具体代码示例,和现实中的例子,以及详细场景应用。

本文出自 “书生” 博客,请务必保留此出处

摘抄美文4、承诺是一件美好的事情,但美好的东西往往不会变为现实。

我是架构师-设计模式-工厂模式–抽象工厂和工厂方法区别

相关文章:

你感兴趣的文章:

标签云: