`
miracle9i
  • 浏览: 34616 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

简单工厂模式

阅读更多

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

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判断等被转移到工厂类中了,维护时也仅需修改工厂类,简化了调用类中的代码。

 

 

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

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

 

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics