/** * @Title: Calculation.java * @Package com.wangbiao.design.factory * @Description: TODO * @author wangbiao * @date 2014-9-24 下午11:16:27 * @version V1.0 */ package com.wangbiao.design.factorymethod; /** * @Title: Calculation.java * @Package com.wangbiao.design.factory * @Description: TODO * @author wangbiao * @date 2014-9-24 下午11:16:27 * @version V1.0 */ public abstract class Calculation { private double num1; private double num2; public double getNum1() { return num1; } public void setNum1(double num1) { this.num1 = num1; } public double getNum2() { return num2; } public void setNum2(double num2) { this.num2 = num2; } public abstract double getResult(); } class AddOperation extends Calculation{ @Override public double getResult() { return this.getNum1() +this.getNum2(); } } class SubOperation extends Calculation{ @Override public double getResult() { return this.getNum1()- this.getNum2(); } } class MulOperation extends Calculation{ @Override public double getResult() { return this.getNum1() * this.getNum2(); } } class DivOperation extends Calculation{ @Override public double getResult() { if(this.getNum2() != 0){ return this.getNum1() / this.getNum2(); }else{ System.out.println("分母不能爲零"); return 0; } } } /** * @Title: IFactory.java * @Package com.wangbiao.design.factorymethod * @Description: TODO * @author wangbiao * @date 2014-9-24 下午11:46:26 * @version V1.0 */ package com.wangbiao.design.factorymethod; /** * @Title: IFactory.java * @Package com.wangbiao.design.factorymethod * @Description: TODO * @author wangbiao * @date 2014-9-24 下午11:46:26 * @version V1.0 */ public interface IFactory { public Calculation creatOperation(); } class AddFactory implements IFactory{ @Override public Calculation creatOperation() { return new AddOperation(); } } class SubFactory implements IFactory{ @Override public Calculation creatOperation() { return new SubOperation(); } } class MulFactory implements IFactory{ @Override public Calculation creatOperation() { return new MulOperation(); } } class DivFactory implements IFactory{ @Override public Calculation creatOperation() { return new DivOperation(); } } /** * @Title: Client.java * @Package com.wangbiao.design.factorymethod * @Description: TODO * @author wangbiao * @date 2014-9-24 下午11:44:30 * @version V1.0 */ package com.wangbiao.design.factorymethod; /** * @Title: Client.java * @Package com.wangbiao.design.factorymethod * @Description: TODO * @author wangbiao * @date 2014-9-24 下午11:44:30 * @version V1.0 */ public class Client { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub IFactory factory = new AddFactory(); Calculation cal = factory.creatOperation(); cal.setNum1(1); cal.setNum2(2); System.out.println(cal.getResult()); } }