java设计模式之简单工厂模式

为什么要用设计模式,这个我就不说了,原因很简单,因为它就是“美”。设计模式我也是刚开始学,现在将我写的一些模拟代码写下,以备日后学习研究提高使用。

首先说下简单工厂模式,这个模式通过一个简单计算器的例子实现。ok上代码

1。所有的计算器都能经过技术后得打计算结果。所以可以抽象出一个计算结果的方法

package com.yjck.simplefactory;
/**
 * 操作的接口类,所有的具体实现类的接口类,定义了通用的方法
 */
public interface Operation {
	/**
	 * 获得计算后的结果
	 * @param a
	 * @param b
	 * @return
	 */
	public double getResult(double a,double b);

}

 

2。基本的四则运算

package com.yjck.simplefactory;

public class OperationAdd implements Operation {
	/**
	 * @see Operation 加法计算
	 */
	public double getResult(double a, double b) {		
		return a+b;
	}

}


package com.yjck.simplefactory;

public class OperationDiv implements Operation {

	/**
	 * 除法运算
	 */
	public double getResult(double a, double b) {
		// TODO Auto-generated method stub
		return a/b;
	}

}


package com.yjck.simplefactory;

public class OperationMul implements Operation {

	/**
	 *  乘法运算
	 */
	public double getResult(double a, double b) {
		// TODO Auto-generated method stub
		return a*b;
	}

}


package com.yjck.simplefactory;

public class OperationSub implements Operation {
	/**
	 * 减法运算
	 */
	public double getResult(double a, double b) {
		// TODO Auto-generated method stub
		return a-b;
	}


}

 

3。工厂类,根据不同的运算方式生产不同的计算类

package com.yjck.simplefactory;
/**
 * 简单工厂模式之工厂类
 * 这个类根据操作类型的不同可以自由生成相应的处理类
 */
public class Factory {
	public static Operation createOperation(String opt){
		Operation operation = null;
		if("+".equals(opt)){
			operation = new OperationAdd();
		}
		if("-".equals(opt)){
			operation = new OperationSub();
		}
		if("*".equals(opt)){
			operation = new OperationMul();
		}
		if("/".equals(opt)){
			operation = new OperationDiv();
		}
		
		return operation;
	}
}

4。客户端调用

 

package com.yjck.simplefactory;

public class Run {

	/**
	 * 主类,程序入口
	 */
	public static void main(String[] args) {
		Operation operation = null;
		operation = Factory.createOperation("/");
		double result = operation.getResult(1.00, 5.33);
		System.out.println(result);
	}
	/**
	 * ********下面这些话是对简单工厂模式的总结********
	 * 和以往的java程序写法不同,简单工厂模式充分利用了java的
	 * 多态机制,成功的将具体的实现类进行了剥离,也就是进行了
	 * 解耦的操作,使得程序更加灵活,如果我们要对加法进行修改
	 * 就只需要在实现加法的类中进行修改,如果我们要增加一个计算
	 * 方法,只需要写一个具体的实现类,然后再factory类中加一个
	 * 分支语句就OK了。
	 * ***********************************************
	 */
}

 

你可能感兴趣的:(java,设计模式)