实现简单工厂模式

实现简单工厂模式

package factory.test3;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import factory.test2.Operation;

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String strNumA,strNumB,strOperationalSign;
		System.out.println("Please input a number A:");
		try {
			strNumA=br.readLine().trim();
			System.out.println("Please input an operational sign:");
			strOperationalSign=br.readLine().trim();
			factory.test3.Operation operationObject=OperationFactory.createOperation(strOperationalSign);
			System.out.println("Please input a number B:");
			strNumB=br.readLine().trim();
			operationObject.setNumA(Double.parseDouble(strNumA));
			operationObject.setNumB(Double.parseDouble(strNumB));
			Double result=operationObject.getResult();
			System.out.println("The result is :"+ result );
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

package factory.test3;

public class Operation {
	private double numA=0;
	private double numB=0;
	
	
	public double getNumA() {
		return numA;
	}


	public double getNumB() {
		return numB;
	}


	public void setNumA(double numA) {
		this.numA = numA;
	}


	public void setNumB(double numB) {
		this.numB = numB;
	}


	public double getResult(){
		double result=0;
		return result ;
	}
	
}

package factory.test3;

public class OperationAdd extends Operation{
	public double getResult(){
		double result=0;
		result=getNumA()+getNumB();
		return result;
	}
}

package factory.test3;

public class OperationSubtract extends Operation{
	public double getResult(){
		double result=0;
		result=getNumA()-getNumB();
		return result;
	}
}

package factory.test3;

public class OperationMultiply extends Operation{
	public double getResult(){
		double result=0;
		result=getNumA()*getNumB();
		return result;
	}
}

package factory.test3;

public class OperationDivide extends Operation{
	public double getResult(){
		double result=0;
		result=getNumA()/getNumB();
		return result;
	}
}

package factory.test3;

public class OperationFactory {
	public static Operation createOperation(String strOperationalSign){
		int intOperationalSign = 1;
		Double strResult = null;
		if("+".equals(strOperationalSign)){
			intOperationalSign=1;
		}else if("-".equals(strOperationalSign)){
			intOperationalSign=2;
		}else if("*".equals(strOperationalSign)){
			intOperationalSign=3;
		}else if("/".equals(strOperationalSign)){
			intOperationalSign=4;
		}
		switch(intOperationalSign){
			case 1:
				return new OperationAdd();
			case 2:
				return new OperationSubtract();
			case 3:
				return new OperationMultiply();
			case 4:
				return new OperationDivide();
			default:
				return null;
		}
	}
}


注:本文章所涵盖的知识来源于程杰老师的《大话设计模式》,我从中受益匪浅,推荐大家拜读:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值