大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
来源:互联网 发布:招聘助手软件 编辑:程序博客网 时间:2024/04/30 18:57
简单工厂模式、抽象工厂模式、工厂方法模式,这三种工厂模式都属于设计模式中的创建型模式,它们在形式和特点上也多少有些相似,其最终目的都是帮我们将对象的实例化部分取出来,进而优化系统架构,增强系统的扩展性,也就是说更好的体现开放封闭原则。
简单工厂模式:
概念:
简单工厂模式是类的创建模式,又叫做静态工厂方法模式,是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,涉及到工厂角色、抽象产品角色以及具体产品角色。
结构图:
分析:
一: 简单工厂类是整个模式的关键所在,包含了必要的逻辑判断,根据给定信息,决定究竟应该创建哪个类的对象。客户端可以免除直接创建产品对象的责任,而仅仅负责消费对象就可以了,这种做法就实现了对职责权利的分割,有利于优化结构。
二:工厂类集中了所有实例的逻辑,违反了高内聚这一原则,它所能创建的类只能是事先考虑好的,如果一旦添加新的类就需要改变工厂类了;同时,当具体产品增多时,可能就会出现工厂类根据不同的条件创建不同实例的需求,这种对条件的判断和对具体产品类型的判断交错在一起,容易产生错误,对系统的维护和扩展也不利。这些都在工厂方法模式中得到改善。
工厂方法模式:
抽象工厂模式:
类实例图:
工厂方法模式:
抽象工厂模式:
综上比较:
产品族:属于不同产品等级结构,但功能相互关联的产品组成的集合。
简单工厂模式:
生成同一等级中的任何产品
创建工厂,工厂的作用就是创建接口
工厂类包含必要逻辑判断,根据客户端的选择动态实例化相关类
工厂方法:
生成统一等级结构中的固定产品
只有一个抽象产品类,可以派生出多个具体的产品类
每个具体工厂类创建一个具体产品类的实例
把简单工厂的内部逻辑判断移到客户端来实现,若要增加功能,修改客户端代码
客服简单工厂违背的开放封闭原则,保持封装对象创建过程的优点
抽象工厂:
用抽象工厂创建产品
生产不同产品族的全部产品
有多个抽象产品类,每个抽象产品类可以派生出多个具体的产品类
每个具体工厂类创建多个具体产品类的实例
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大话设计模式之简单工厂模式&工厂方法模式&抽象工厂模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 设计模式理解之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 简单工厂模式,工厂方法模式,抽象工厂模式 比较
- 设计模式-工厂模式(简单工厂,工厂方法,抽象工厂)
- IOS开发之手势——UIGestureRecognizer 共存
- Installshield 12 安装包制作工具
- cygpath like command on Msys
- lua table转成xml字符串
- OGRE 资源管理
- 大话设计模式之简单工厂模式、抽象工厂模式及工厂方法模式的比较
- 大数据(Bigdata)未来发展趋势预测
- SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
- Ubuntu修改host遇到unable to resolve host
- ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
- 如何解决每当打开一个m文件时,matlab应用程序随之打开
- [WebKit]RefPtr和PassRefPtr基础
- 内存分配中的堆与栈
- JavaMelody开源系统性能监控