设计模式-简单工厂模式(simple factory)
来源:互联网 发布:你的名字 知乎 编辑:程序博客网 时间:2024/05/11 20:23
一、概述
简单工厂模式又称静态工厂方法(Static Factory Method),从结构上分类属于结构型设计模式,但不属于23种GOF设计模式之一。
二、意图
让一个静态工厂方法动态的决定实例化哪个类。
三、角色
工厂类(SimpleFactory):包含一个实例化具体类的静态方法
抽象产品(Produce):具体产品的公共抽象类
具体产品(ConcreteProduce):具体产品
四、UML图
五、示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
class
Product
{
public
:
//产品的操作
virtual
void
opration() = 0;
};
class
ProductA :
public
Product
{
public
:
virtual
void
opration()
{
std::cout <<
"this is produceA opration()"
<< std::endl;
}
};
class
ProductB :
public
Product
{
public
:
virtual
void
opration()
{
std::cout <<
"this is produceB opration()"
<< std::endl;
}
};
class
SimpleFactory
{
public
:
//静态方法,具体实例化类
static
Product* createProduct(
int
iType)
{
switch
(iType)
{
case
1:
return
new
ProductA;
case
2:
return
new
ProductB;
}
}
};
int
main(
int
argc,
char
*argv[])
{
//创建一个简单工厂
SimpleFactory factory;
//利用简单工厂具体实例化
Product* productA = factory.createProduct(1);
Product* productB = factory.createProduct(2);
//使用实例化类
productA->opration();
productB->opration();
return
0;
}
六、优缺点
优点:
在工厂类中包含了复杂的逻辑,可以根据实际情况决定在什么时候实例化具体的类。免去了客户端创建产品的责任,实现了责任的隔离。
缺点:
正是由于在工厂类中包含了复杂的逻辑,违反了高内聚的责任分配原则,当添加新的类时,就必须去修改工厂类中的逻辑,因此违反了开放封闭原则。
0 0
- 设计模式-简单工厂(Simple Factory)
- 简单工厂设计模式(Simple Factory)
- 设计模式 一 简单工厂Simple Factory(工厂模式)
- 设计模式-Simple Factory 简单工厂模式(静态工厂)
- 设计模式-简单工厂模式(Simple Factory)
- 设计模式(二)-简单工厂(Simple Factory)模式
- 设计模式之简单工厂模式(Simple Factory Pattern)
- 设计模式1:Simple Factory Pattern(简单工厂模式)
- 设计模式之Simple Factory(简单工厂模式)
- Java设计模式 - 简单工厂模式(Simple Factory)
- 大话设计模式一:简单工厂模式(simple factory)
- c#设计模式- Simple Factory模式(简单工厂)
- 设计模式-简单工厂模式(simple factory)
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- 设计模式(1):简单工厂模式(Simple Factory Pattern)
- 设计模式之简单工厂模式(Simple Factory)
- Java设计模式:简单工厂模式(Simple Factory Pattern)
- 【设计模式】之 Simple Factory 简单工厂
- 导入数据库
- FregServer进程,封装进程间通信数据
- Java垃圾回收器 原理 优点
- iOS官方开发接口变动
- 蜗牛—JQuery学习之图片隐藏与鼠标划过
- 设计模式-简单工厂模式(simple factory)
- BigDecimal 使用方法详解(Java高精度计算)
- Spring Mvc 笔记
- 哈希用途
- 蜗牛—JQuery学习之全选简单实现
- CreateInstance(__uuidof(Connection)) 不支持此接口解决方法
- Effective C++ 之 35 考虑virtual函数之外的其他选择
- 隧道磁阻式传感器应用之方案论证
- 杭电2084 数塔