我是架构师-设计模式-工厂模式--抽象工厂和工厂方法区别-阿里云开发者社区

开发者社区> 余二五> 正文

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

简介:
+关注继续查看

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

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

抽象工厂模式: 

抽象工厂

工厂方法模式:

工厂方法

 

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

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

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

用一个比较现实的例子:

抽象工厂:

 

 

 工厂方法: 

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

解读:

对比两幅图

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

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

抽象工厂:Abstractfactory

工厂方法:Ctreaor

3. 产品对应

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

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

4.少许问题

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

本地一级:本土

本地二级:仅有户口

非本地一级:5年以上

非本地二级:刚来的

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

简述两者的应用场景

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

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










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/955356,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
设计模式之三(工厂方法模式)
原文:设计模式之三(工厂方法模式) 前言 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到其子类。 简单工厂模式(http://www.cnblogs.com/aehyok/archive/2013/05/10/3072008.html)的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
746 0
Apache架构师总结的30条设计原则
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 【编者的话】本文作者叫Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。
751 0
架构那点事系列一 - 设计模式前章
                                        ----能够正视失败和错误,而不回避和掩盖,正是职业架构师的宝贵素养!!!       首先,我们需要明白的是何为架构,以我看来,架构更多关注的是高层设计(所谓的high-level Design),它是一组有关如何确定软件系统的组织机构的重要决策。感兴趣的朋友可以查看这篇文章来深入理解一下架构的概念
1155 0
设计模式之四(抽象工厂模式第三回合)
原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如IFactory factory=new AccessFactory(),在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。
673 0
设计模式之四(抽象工厂模式第一回合)
原文:设计模式之四(抽象工厂模式第一回合) 前言 首先关于抽象工厂模式的学习,我们需要慢慢的,由浅入深的进入。不能单刀直入,否则可能达不到预期学明白的目标。 第一回合    首先我们从最简单的数据访问程序开始吧。
634 0
设计模式快速学习(二)抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
766 0
+关注
12613
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载