简单的工厂模式 - 大话设计模式

*每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。*

先了解面向对象设计

当你需要实例化哪个类,或者未来会不会增加实例化对象,所以考虑用一个单独的类来做这个创造实例化的过程–工厂

耦合度降低 每个实例是相对独立的 做到了容易维护,扩展和复用

例子:

简单的工厂模式

简单的工厂模式

1.PO类

java

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
package com.sjs.SimpleFactory;

public class Operation {
double numberA;
double numberB;

public double getNumberA() {
return numberA;
}

public void setNumberA(double numberA) {
this.numberA = numberA;
}

public double getNumberB() {
return numberB;
}

public void setNumberB(double numberB) {
this.numberB = numberB;
}

public double getReasult() {
double res = 0;
return res;
}
}

2.加减乘除类(封装类继承基类)

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.sjs.SimpleFactory;

public class Add extends Operation {
// 重写getResult方法
@Override
public double getReasult() {
return super.numberA + super.numberB;
}
}

class Sub extends Operation {
// 重写getResult方法
@Override
public double getReasult() {
return super.numberA - super.numberB;
}
}

3.简单工厂类

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.sjs.SimpleFactory;

public class OperationFactory {
// 当你输入表达式工厂自动匹配类创建对象
// 实例化对象的问题交给工厂
public static Operation operation(String operate) {// 用符号自动匹配要创建的实例
Operation operation = null;
switch (operate) {
case "+":
// add
operation = new Add();
break;
case "-":
// sub
operation = new Sub();
break;
}
return operation;
}
}

4.使用简单工厂模式

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.sjs.SimpleFactory;

public class Test {
public static void main(String[] args) {
// 简单工厂模式()
// 用工厂类自动创建实例
Operation operation = OperationFactory.operation("-");
operation.setNumberA(12);
operation.setNumberB(23);
System.out.println(operation.getReasult());

// 没有代理模式
// Operation add = new Add();
// add.setNumberA(12);
// add.setNumberB(23);
// System.out.println(add.getReasult());
//
// Operation sub = new Sub();
// sub.setNumberA(12);
// sub.setNumberB(23);
// System.out.println(sub.getReasult());
}
}