简单工厂模式,到底要实例化谁,将来会不会增加实例化的对象,比如说增加开根运算,这是容易变化的地方,应该考虑使用一个单独的类做这个创造的过程,这就是工厂。
假如说我们使用加减乘除来作为例子,说明简单工厂模式的方法。其中简单工厂模式根据输入的字符返回具体的加减乘除对象,将判断符号的功能交给工厂来做。我们给工厂输入了一个符号,工厂就给我们返回一个对象,我们直接使用这个对象进行运算即可,不需要关系具体的判断过程。
代码实现:
/**
* 简单工厂模式
* @author Administrator
*
*/
public class SimpleFactory {
public static void main(String[] args) {
// 测试简单工厂的代码
Operation oper;
oper = OperationFactory.createOpeartion("*");
oper.a = 10;
oper.b = 5;
double result = oper.getResult();
System.out.println("最后的结果为:" + result);
}
}
// 简单工厂的实现类
class OperationFactory{
public static Operation createOpeartion(String operate) {
Operation oper = null;
switch (operate) {
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
default:
System.out.println("输入的运算符号有问题!");
break;
}
return oper;
}
}
// 基础操作类
abstract class Operation{
double a;
double b;
public double getA() {
return this.a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return this.b;
}
public void setB(double b) {
this.b = b;
}
// 以后继承的方法要重写的方法
public abstract double getResult();
}
// 定义 + - x / 四种操作方法
class OperationAdd extends Operation{
@Override
public double getResult() {
double result = 0;
result = a + b;
return result;
}
}
// 减
class OperationSub extends Operation{
@Override
public double getResult() {
double result = 0;
result = a - b;
return result;
}
}
//乘
class OperationMul extends Operation{
@Override
public double getResult() {
double result = 0;
result = a * b;
return result;
}
}
//除
class OperationDiv extends Operation{
@Override
public double getResult() {
double result = 0;
result = a /- b;
return result;
}
}
原文:https://www.cnblogs.com/liulongtao/p/14313482.html