java設計模式_工廠方法

/**
 * @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());

    }

}
相關文章
相關標籤/搜索