首页 > 其他 > 详细

java 简单工厂模式示例

时间:2014-02-18 14:24:37      阅读:410      评论:0      收藏:0      [点我收藏+]

       本文举一个简单的例子,用来说明工厂模式。(实现一个加减乘除的计算器)

       抽象操作类 :

package nc.lws.factory;

public abstract class AbstractOperation {
	
	private double number1;
	
	private double number2;

	public double getNumber1() {
		return number1;
	}

	public void setNumber1(double number1) {
		this.number1 = number1;
	}

	public double getNumber2() {
		return number2;
	}

	public void setNumber2(double number2) {
		this.number2 = number2;
	}
	
	public abstract double getResult();

}
           加减乘除实现类

package nc.lws.factory;

public class AddOperation extends AbstractOperation {

	@Override
	public double getResult() {
		return this.getNumber1() + this.getNumber2();
	}

}
package nc.lws.factory;

public class SubOperation extends AbstractOperation {

	@Override
	public double getResult() {
		return this.getNumber1() - this.getNumber2();
	}

}
package nc.lws.factory;

public class MutiOperation extends AbstractOperation {

	@Override
	public double getResult() {
		return this.getNumber1() * this.getNumber2();
	}

}
package nc.lws.factory;

public class DivOperation extends AbstractOperation {

	@Override
	public double getResult() {
		return this.getNumber1() / this.getNumber2();
	}

}

        操作标记类:

package nc.lws.factory;

public enum OperationLabel {
	ADD,
	SUB,
	MUTI,
	DIV
}

        工厂类:

package nc.lws.factory;

public class OperationFactory {
	
	public static AbstractOperation createOperation(OperationLabel operation) {
		AbstractOperation oper= null;
		
		switch(operation) {
		case ADD:
			oper = new AddOperation();
			break;
		case SUB:
			oper = new SubOperation();
			break;
		case MUTI:
			oper = new MutiOperation();
			break;
		case DIV:
			oper = new DivOperation();
			break;
		}
		
		return oper;
	}

}
        客户端测试类:

package nc.lws.factory;

public class ClientMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		AbstractOperation oper = null;
		//加法
	    oper = OperationFactory.createOperation(OperationLabel.ADD);
		oper.setNumber1(1);
		oper.setNumber2(2);
		System.out.println("add TEST----->" +oper.getResult());
		//减法
	    oper = OperationFactory.createOperation(OperationLabel.SUB);
		oper.setNumber1(1);
		oper.setNumber2(2);
		System.out.println("sub TEST----->" +oper.getResult());
		//乘法
		oper = OperationFactory.createOperation(OperationLabel.MUTI);
		oper.setNumber1(1);
		oper.setNumber2(2);
		System.out.println("muti TEST----->" +oper.getResult());
		//除法
		oper = OperationFactory.createOperation(OperationLabel.DIV);
		oper.setNumber1(1);
		oper.setNumber2(2);
		System.out.println("div TEST----->" +oper.getResult());

	}

}

            例子虽然简单,但体现了java的三大特性:封装,继承与多态。

            封装:具体操作为各种操作类,客户端调用为客户端类

            继承:具体操作继承了抽象操作类

            多态:客户端通过调用工厂方法动态实例化各种具体操作,而具体操作类又自动向上转型为抽象操作类



java 简单工厂模式示例

原文:http://blog.csdn.net/liwenshui322/article/details/19357805

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!