简单工厂模式(SimpleFactory)

First Post:

Last Update:

简单工厂模式(SimpleFactory)

1、一开始:业务逻辑和客户端逻辑未分离

2、业务的封装——实现业务和客户端界面逻辑分离

(降低耦合度、分开来更加容易维护/拓展)

Operation类

客户端——mian函数

3、更加松的耦合——通过继承运算类来实现运算的一些基本操作,将每一个运算均单独作一个新类,再实现每一个类的具体逻辑、重写一定的运算操作。如果后面要添加新的运算类,比如说开平方的运算等,可以直接建新类去继承运算类去实现。这样设计的话(松耦合),就不会影响到之前已经写好的东西。如果要对某种运算做修改,对实现该类的运算做修改即可。(设计了相当多的计算类)

4、简单工厂模式—>如何让计算器知道我要用哪一个类呢?

使用简单工厂模式

解决的问题——到底要实例化谁?如何去实例化?

考虑到用单独的类来做这个创造实例的过程——简单工厂模式

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
Public class OperationFactory
{
public static Operation createFactory(string operate)
{
Operation oper = null;
switch(operate)
{
case :"+": {oper = new OperationAdd( ); break;}
case:" ":{ … }
case:" ":{ … }
//拓展其他的功能类之后,需要在此处添加分支来提供实例化该功能类的入口。
}
return oper;
}
}

class OperationAdd
{

}

class xxx
{

}

客户端使用工厂实例实例化对应功能类对象,再通过该实例进行计算操作。
Operation oper;
oper = OperationFactory.createFactory("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult( );

使用简单工厂的好处:

  • 做修改时,只针对某一个需要修改的功能类作修改即可,不会影响到其他的类的功能实现;
  • 在添加新的功能时,只需要添加对应的功能类的实现,以及在switch中添加分支即可。