设计模式-简单工厂模式(三)计算器小例子

输入数字和想要进行的运算

package com.duanshiyi.operation;

import java.util.Scanner;

public class Count {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		/**
		 * 实现加减乘除小程序
		 */
		System.out.println("请输入一个数字:");
		Scanner sc = new Scanner(System.in);
		int numberA = sc.nextInt();
		//&无特殊含义,只是为了模拟添加新功能
		System.out.println("请输入想要进行的运算操作(包括+、 -、  *、  / 、&):");
		String op = sc.next();
		System.out.println("请再输入一个数字:");
		int numberB = sc.nextInt();
		sc.close();
		int result  = 0;
        Operation of =  OperationFactory.createoperation(op);
		of.setNumberA(numberA);
		of.setNumberB(numberB);
		result = of.GetResult();
		System.out.println("result :" + result);
	}

}
运算类(父类)Operation

package com.duanshiyi.operation;

public class Operation {

	private int numberA;
	private int numberB;
	public int getNumberA() {
		return numberA;
	}
	public void setNumberA(int numberA) {
		this.numberA = numberA;
	}
	public int getNumberB() {
		return numberB;
	}
	public void setNumberB(int numberB) {
		this.numberB = numberB;
	}
	public int GetResult() throws Exception{
		int result = 0;
		return result;
	}

}
各子类

OperationAdd

package com.duanshiyi.operation;

public class OperationAdd extends Operation{
	@Override
	public int GetResult() {
		int result = 0;
		result = super.getNumberA() + super.getNumberB();
		return result;
	}
}

OperationSub

package com.duanshiyi.operation;

public class OperationSub extends Operation {
	@Override
	public int GetResult() {
		int result = 0;
		result = super.getNumberA() - super.getNumberB();
		return result;
	}

}
OperationMul

package com.duanshiyi.operation;

public class OperationMul extends Operation {
	@Override
	public int GetResult() {
		int result = 0;
		result = super.getNumberA() * super.getNumberB();
		return result;
	}
}
OperationDiv

package com.duanshiyi.operation;

public class OperationDiv extends Operation {
    @Override
    public int GetResult() throws Exception {
        int result = 0;
        if(super.getNumberB() == 0)
            System.out.println("除数不能为0");
        result = super.getNumberA() / super.getNumberB();
        return result;
    }
}
OperationSquare(无特殊含义,只是测试添加功能)
package com.duanshiyi.operation;

public class OperationSquare extends Operation {
	@Override
	public int GetResult() throws Exception {
		int result = 0;
		result = (super.getNumberA() + super.getNumberB()) * 2 ;  
		return result;
	}
}
OperationFactory(核心)

package com.duanshiyi.operation;

public class OperationFactory {
	public static Operation createoperation(String op){
		Operation oper = null;
		switch(op){
			case "+" :
				oper = new OperationAdd();
				break;
			case "-" :
				oper = new OperationSub();
				break;
			case "*" :
				oper = new OperationMul();
				break;
			case "/" :
				oper = new OperationDiv();
				break;
			case "&" :
				oper = new OperationSquare();
				break;
		}
		return oper;
		
	}
}
到底要实例化谁,将来要不要增加实例化的对象,这是关键问题。









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值