使用工厂方法实现加减乘除四则运算

1.工厂方法简单介绍

        工厂方法(Factory Method)是简单工厂的进一步抽象。产品的核心工厂类被提升为一个抽象类,具体的工作交给子类实现。简单工厂和工厂方法可以将其想象成一个小作坊和一个公司。简单工厂就是相当于小作坊,工厂方法相当于公司。公司本身不负责具体的工作,全交由下属工厂或者是作坊来负责。

2.UML类图

其中Calculate和Factory为抽象类。

3.具体代码实现

代码:

/*
 * 名称: 工厂方法实现
 * 功能: 利用工厂方法实现加减乘除四则运算的功能,将计算结果传达到抽象工厂类,再下发到各加减乘除运算处理工厂来具体处理
 * */
import java.util.Scanner;

//--------------------------抽象计算类---------------------------------

abstract class Calculator								
{
	
	public abstract void calculate(float num1,float num2);//抽象一个计算方法
}

//------------------------具体实现计算类-------------------------------

class Addition extends Calculator					   	  //实现加法
{
	public void calculate(float num1,float num2)
	{
		System.out.println("num1+num2="+(num1+num2));
	}
}

class Substraction extends Calculator				     //实现减法
{
	public void calculate(float num1,float num2)
	{
		System.out.println("num1-num2="+(num1-num2));
	}
}

class Multiplication extends Calculator				 //实现乘法
{
	public void calculate(float num1,float num2)
	{
		System.out.println("num1*num2="+(num1*num2));
	}
}

class Division extends Calculator						//实现除法
{
	public void calculate(float num1,float num2)
	{
		if(num2==0) 
		{
			System.out.println("num2为0,无法执行除法计算");
		}
		else
			System.out.println("num1/num2="+(num1/num2));
		
	}
}

//--------------------------工厂类----------------------------------

abstract class Factory							     //抽象工厂类,负责对下面的工厂发号施令
{
    //抽象一个处理四则运算方法类,即为工厂类发出的命令	
    public abstract Calculator createCalculate(); 
}

//具体工厂类,实际处理四则运算

class AdditionFactory extends Factory				   //加法工厂类,负责处理加法运算
{
	public Calculator createCalculate()
	{
		return new Addition();
	}
}

class SubstractionFactory extends Factory				//减法工厂类,负责处理减法运算
{
	public Calculator createCalculate()
	{
		return new Substraction();
	}
}

class MultiplicationFactory extends Factory				//乘法工厂类,负责处理乘法运算
{
	public Calculator createCalculate()
	{
		return new Multiplication();
	}
}

class DivisionFactory extends Factory					//除法工厂类,负责处理除法运算
{
	public Calculator createCalculate()
	{
		return new Division();
	}
}

//--------------------------客户端-----------------------------------

public class FactoryMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		System.out.print("请输入num1=");
		float num1=sc.nextFloat();									//输入num1的值
		System.out.print("请输入num2=");
		float num2=sc.nextFloat();									//输入num2的值
		
		System.out.println("四则运算结果如下:");
		
		//执行加法运算
		Calculator calculateAdd =new Addition();						//定义加法运算类
		Factory factoryAdd=new AdditionFactory();						//定义加法工厂
		calculateAdd.calculate(num1, num2);
		factoryAdd.createCalculate();
		
		//执行减法运算
		Calculator calculateSub =new Substraction();					//定义减法运算类
		Factory factorySub=new SubstractionFactory();					//定义减法工厂
		calculateSub.calculate(num1, num2);
		factorySub.createCalculate();
		
		//执行乘法运算
		Calculator calculateMul =new Multiplication();					//定义乘法运算类
		Factory factoryMul=new MultiplicationFactory();					//定义乘法工厂
		calculateMul.calculate(num1, num2);
		factoryMul.createCalculate();
		
		//执行除法运算
		Calculator calculateDiv =new Division();						//定义除法运算类
		Factory factoryDiv=new DivisionFactory();						//定义除法工厂
		calculateDiv.calculate(num1, num2);
		factoryDiv.createCalculate();
		
		sc.close();
	}

}

运行结果:

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值