设计模式(简单工厂模式)

简单工厂模式  

要点:

-简单工厂模式也叫静态工厂模式,工厂类一般使用静态方法,通过接收的参数的不同来返回不同的对象实例  
-对于增加新产品无能为力,不能改代码的话,则无法扩展
实现一个计数器控制台程序,要求输两个数和运算符号,得到结果(简单工厂模式代码实现)

package com.my.operation;
/*
 * 运算类
 * */
public class Operation {
	private double numberA = 0;
	private double numberB = 0;
	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 getResult() {
		double result = 0;
		return result;
	}
}
package com.my.operation;
/*
 * 加法运算
 * */
public class OperationAdd extends Operation {
	@Override
	public double getResult() {
		double result = 0;
		result = super.getNumberA() + super.getNumberB();
		return result;
	}
}
package com.my.operation;
/*
 * 减法运算
 * */
public class OperationSub extends Operation {
	@Override
	public double getResult() {
		double result = 0;
		result = super.getNumberA() - super.getNumberB();
		return result;
	}
}
package com.my.operation;
/*
 * 乘法运算
 * */
public class OperationMul extends Operation {
	@Override
	public double getResult() {
		double result = 0;
		result = super.getNumberA() * super.getNumberB();
		return result;
	}
}
package com.my.operation;
/*
 * 除法运算
 * */
public class OperationDiv extends Operation {
	@Override
	public double getResult() {
		double result = 0;
		if(super.getNumberB() == 0) {
			try {
				throw new Exception("除数不能为零");
			} catch (Exception e) {
				
				e.printStackTrace();
			}
		}
		result = super.getNumberA() / super.getNumberB();
		return result;
	}
}
package com.my.operation;
/*
 * 运算工厂类
 * 用来实例化对象
 * */
public class OperationFactory {
	public static Operation createOperate(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;	
		}
		return oper;
	}
}
package com.my.operation;
/*
 * 客户端
 * */
public class Client {
	public static void main(String[] args) {
		Operation oper;
		oper = OperationFactory.createOperate("-");
		oper.setNumberA(10);
		oper.setNumberB(5);
		double result = oper.getResult();
		System.out.println(result);
	}
}

猜你喜欢

转载自blog.csdn.net/xiongmengyao/article/details/85225410