首页 > 其他 > 详细

简单工厂模式

时间:2019-09-05 21:42:54      阅读:148      评论:0      收藏:0      [点我收藏+]

Operation.java

package calc;

public abstract class Operation {

	private static double _numberA = 0;
	private static double _numberB = 0;
	
	static class NumberA {
		
		public static double get_numberA() {
			return _numberA;
		}
		public static void set_numberA(double numberA) {
			_numberA = numberA;
		}
	}
	
	static class NumberB {
		
		public static double get_numberB() {
			return _numberB;
		}
		public static void set_numberB(double numberB) {
			_numberB = numberB;
		}
	}
	
	public abstract double GetResult();
}

class OperationAdd extends Operation {

	public double GetResult() {
		double result = 0;
		result = NumberA.get_numberA() + NumberB.get_numberB();
		return result;
	}
	
}

class OperationSub extends Operation {

	public double GetResult() {
		double result = 0;
		result = NumberA.get_numberA() - NumberB.get_numberB();
		return result;
	}
	
}

class OperationMul extends Operation {

	public double GetResult() {
		double result = 0;
		result = NumberA.get_numberA() * NumberB.get_numberB();
		return result;
	}
	
}

class OperationDiv extends Operation {

	@Override
	public double GetResult() {
		double result = 0;
		if(NumberB.get_numberB() == 0)
			try {
				throw new Exception("not divide by zero");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				System.out.println("not divide by zero");
			}
			
		result = NumberA.get_numberA() / NumberB.get_numberB();
		return result;
	}
	
}

  

OperationFactory.java

package calc;

public class OperationFactory {

	public static Operation createOperate (String operator) {
		
		Operation oper = null;
		
		if(operator == "+")
			oper = new OperationAdd();
		else if(operator == "-")
			oper = new OperationSub();
		else if(operator == "*")
			oper = new OperationMul();
		else if(operator == "/")
			oper = new OperationDiv();
		
		return oper;
		
	}
}

  

测试类

package calc;
import java.io.*;

class Calculator {	// 输入两个数, 相除得结果

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {

//		BufferedReader b = new BufferedReader(new InputStreamReader(System.in)); 
//		System.out.println("please input a number A:");
//		String A = b.readLine();
//		System.out.println("please input a number B:");
//		String B = b.readLine();
//		int C = (new Integer(A)).intValue()/(new Integer(B)).intValue();
//		System.out.println("The result is :" + C);
		
		Operation oper;
		oper = OperationFactory.createOperate("/");
		Operation.NumberA.set_numberA(1);
		Operation.NumberB.set_numberB(0);
		double result = oper.GetResult();
		System.out.println(result);
	}

}

  

简单工厂模式

原文:https://www.cnblogs.com/mjn1/p/11469698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!