简单工厂模式

从编写简单计算器,来学习简单工厂模式。

1、Operation.java

public abstract  class Operation
{
private double numA;
private double numB;
public double getNumA()
{
	return numA;
}
public void setNumA(double numA)
{
	this.numA = numA;
}
public double getNumB()
{
	return numB;
}
public void setNumB(double numB)
{
	this.numB = numB;
}
public abstract double getResult();
}



2、OperationAdd.java

public class OperationAdd extends Operation
{

	@Override
	public double getResult()
	{
		double result = 0.00;
		result = super.getNumA() + super.getNumB();
		return result;
	}

}



3、OperationSub.java

public  class OperationSub extends Operation
{

    @Override
    public double getResult()
    {
        double result=0;
        result=super.getNumA()-super.getNumB();
        return result;
    }

}


4、OperationMul.java

public class OperationMul extends Operation
{

	@Override
	public double getResult()
	{
		double result=0;
		result=super.getNumA()*super.getNumB();
		return result;
	}

}


5、OperationDiv.java

public class OperationDiv extends Operation
{

	@Override
	public double getResult()
	{
		double result = 0;
		if (super.getNumB() != 0)
		{
			result = super.getNumA() / super.getNumB();
		}
		else
		{
			System.out.println("除数不能为零");
		}
		return result;
	}

}


6、OperationFactory.java

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;
}
}


7、测试程序Client.java

import java.util.Scanner;

public class Client
{

	private static Operation oper;
	private static Scanner in;

	public static void main(String[] args)
	{
		oper = null;
		in = new Scanner(System.in);
		System.out.println("请输入符号(+、-、*、/):");
		String model = in.nextLine();
		oper=OperationFactory.createOperate(model);
		System.out.println("请输入数字a:");
		String strNumA = in.nextLine();
		oper.setNumA(Double.parseDouble(strNumA));
		System.out.println("请输入数字b:");
		String strNumB = in.next();
		oper.setNumB(Double.parseDouble(strNumB));
		double result=oper.getResult();
		System.out.println(result);
	}

}



这里面省略了计算器的界面设计,通过工厂模式设计的计算器,容易拓展,代码修改起来也比较简单。这样的代码重用性也很高。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值