一个简单工厂模式小案例

最基本的计算器功能也可以通过工厂模式实现
用到了继承和多态
抽出一个主类运算类,为了符合开闭原则,对修改关闭,对扩展开放
在该类中定义两个做运算的变量A和B
提供一个etResult方法
新建四个算术运算类继承运算类,重写getResult方法,根据自己的类型返回需要的结果
重写Result方法会覆盖父类的Result方法,调用时会调用重写后的方法(用到了继承)

 package com.bjsxt.operation;

/**
 * 运算类
 * 
 * @author Administrator
 *
 */
public class Operation {
	protected Double Number1;
	protected Double Number2;

	public Double getNumber1() {
		return Number1;
	}

	public void setNumber1(Double number1) {
		Number1 = number1;
	}

	public Double getNumber2() {
		return Number2;
	}

	public void setNumber2(Double number2) {
		Number2 = number2;
	}

	public Double getResult() {
		return 0.0;
	}

}



/**
 * 加法运算类
 * 
 * @author Administrator
 *
 */
public class OperationAdd extends Operation {

	public Double getResult() {
		return this.Number1 + this.Number2;
	}
}


/**
 * 除法运算类
 * 
 * @author Administrator
 *
 */
public class OperationDiv extends Operation {
	public Double getResult() {
		return this.Number1 / this.Number2;
	}
}


/**
 * 乘法运算类
 * 
 * @author Administrator
 *
 */
public class OperationMul extends Operation {
	public Double getResult() {
		return this.Number1 * this.Number2;
	}
}



/**
 * 减法运算类
 * @author Administrator
 *
 */
public class OperationSub extends Operation {
	public Double getResult() {
		return this.Number1 - this.Number2;
	}
}

下面准备工厂对象
工厂对象中提供一个静态方法,返回值类型是运算类,要求传入一个字符串参数
在方法中对该参数进行判断,返回不同的运算类对象,因为返回值类型是运算类,所以该类的所有子类都可以进行返回

/**
 * 计算工厂类
 * 
 * @author Administrator
 *
 */
public class OperationFactory {

	/**
	 * 返回计算工厂类对象,因为返回值类型用的是父类,所以运算类下所有的子类都可以被实例化
	 * 
	 * @param Typeid
	 * @return
	 * @throws Exception 
	 */
	public static Operation getOperation(Character Typeid) throws Exception {
		Operation oper = null;
		switch (Typeid) {
		case '+':
			oper = new OperationAdd();
			break;
		case '-':
			oper = new OperationSub();
			break;
		case '*':
			oper = new OperationMul();
			break;
		case '/':
			oper = new OperationDiv();
			break;
		default:
			throw new Exception("没有该运算符");
		}
		return oper;

	}

这就是一个简单的工厂案例了,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值