设计模式——简单工厂模式

 模式一:简单工厂模式

简单工厂模式体现了面向对象的多态和继承的思想,降低了程序间的耦合程度,便于日后的功能扩展。

本实例实现了一个加减乘除计算器的后台程序,类图如下:

//Operation类定义模板
package 设计模式;
public  class Operation {
	float num1;
	float num2;
	public float getNum1() {
		return num1;
	}
	public void setNum1(float num1) {
		this.num1 = num1;
	}
	public float getNum2() {
		return num2;
	}
	public void setNum2(float num2) {
		this.num2 = num2;
	}
	public float getResult(){
		float result=0;
		return result;
	}
}
以下加减乘除四个类分别继承Operation,
//加法类
package 设计模式;

public class Add extends Operation {

	@Override
	public float getResult() {
		System.out.println(num1+"----"+num2);
		return num1+num2;
	}
	
}
//减法类
package 设计模式;

public class Subtract extends Operation {
	@Override
	public float getResult() {
		// TODO Auto-generated method stub
		return num1-num2;
	}
	
}
//乘法类
package 设计模式;

public class Mutiply extends Operation {
	@Override
	public float getResult() {
		return num1*num2;
	}
	
}
//除法类
package 设计模式;

public class Divide extends Operation {

	@Override
	public float getResult() {
		try{
		return num1/num2;
		}catch(Exception e){
			System.out.println("除数不能为0.");
		}
		return 0.0f;
	}
	
}
下面为代理类,注代理类返回对象为Operation对象,但每个对象根据操作符进行实例化。
package 设计模式;
public class Factory {
	public Operation creatOperation(char operate){
		Operation oper=null;
		switch(operate){
		case '+':
			oper=new Add();
			break;
		case '-':
			oper=new Subtract();
			break;
		}
		return oper;
	}
}
主程序:

package 设计模式;

public class Client {

	public static void main(String[] args) {
		Operation oper=new Factory().creatOperation('+');
		oper.setNum1(22.2f);
		oper.setNum2(32.3f);
		System.out.println(oper.getResult());
	}

}
总结:简单工厂模式通过继承实现子类的多态,可以方便的进行模块增加删除操作。加入需要添加开方运算时只需要添加一个继承了Operation的子类,然后在代理中增加case语句即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值