简单工厂模式

可以使用简单工厂模式,避免调用类中的代码坏味道,在下面的例子中,主要是避免判断代码直接写在调用类中。
首先定义抽象类,抽象类中封装了操作属性:

public abstract  class Caculation {
	protected double numberA;
	protected double numberB;
	public abstract double  caculate();
	public void setNumberA(double numberA) {
		this.numberA = numberA;
	}
	public void setNumberB(double numberB) {
		this.numberB = numberB;
	}
}

 

各具体的运算实现类:

public class OpAdd extends Caculation {
	@Override
	public double caculate() {
		return this.numberA + this.numberB;
	}
}

 

   多个具体实现类,这里不一一列出了。

定义一个工厂方法,封装构造具体运算实现类的过程:

public class CaculationFactory {
	public static Caculation getCaculation(char op){
		Caculation caculation = null;
		switch (op) {
		case '+':
			caculation =  new OpAdd();
			break;
		case '-':
			caculation =  new OpSub();
			break;
		case '*':
			caculation =  new OpMul();
			break;
		case '/':
			caculation =  new OpDiv();
			break;
		default:
			break;
		}
		return caculation;
	}
}

 

 现在举例调用类的调用过程(只列出关键代码):

Caculation caculation = CaculationFactory.getCaculation(operator.charAt(0));
caculation.setNumberA(getNumber(numberA));
caculation.setNumberB(getNumber(numberB));
System.out.println("Result is:"+caculation.caculate());

 这样调用时,仅需通过工厂类,即可获取所需的算法实现类,原有调用类中的if判断等被转移到工厂类中了,维护时也仅需修改工厂类,简化了调用类中的代码。

 

 

使用简单工厂模式后各类间的耦合关系:

 调用类工厂类抽象类算法实现类
调用类 耦合耦合 
工厂类  耦合耦合
抽象类    
算法实现类  继承 

 

简单工厂作为创建型模式中最简单的一种,在此处看来,主要是将调用类与具体类中的耦合转移到工厂类中,并由工厂类管理创建的细节,提高代码的可维护性和可扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值