Java設計模式之四(經典面試題:工廠模式在開發中的運用)

一、工廠模式在開發中的運用  
面試題:
      寫一個簡單的計算器。
 
代碼實現:
抽象一個運算類:
[java]  
package com.qianyan.calcuator;  
public abstract class Operation {  
    //數字一  
    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();  
}  
創建工廠類:
[java]  
package com.qianyan.factory;  
import com.qianyan.calcuator.AddOperation;  
import com.qianyan.calcuator.Operation;  
import com.qianyan.calcuator.SubtractOperation;  
public class OperationFactory {  
    public static Operation getOperation(String oper){  
        if("+".equals(oper))  
            return new AddOperation();  
        else if("-".equals(oper))  
            return new SubtractOperation();  
        else  
            return null;  
    }  
}  
抽象運算的實現類:
[java] 
package com.qianyan.calcuator;  
public class AddOperation extends Operation{  
    @Override  
    public double getResult() {  
        return this.getNum1() + this.getNum2();  
    }  
}  
[java]  
package com.qianyan.calcuator;  
public class SubtractOperation extends Operation{  
    @Override  
    public double getResult() {  
        return this.getNum1() - this.getNum2();  
    }  
}  
用戶類:
[java] 
package com.qianyan.user;  
import java.util.Scanner;  
import com.qianyan.calcuator.Operation;  
import com.qianyan.factory.OperationFactory;  
public class User {  
    public static void main(String[] args) {  
        System.out.println("----小C計算器程序----");  
        Scanner input = new Scanner(System.in);  
        System.out.println("請輸入第一個運算數字:");  
        String str1 = input.nextLine();  
        System.out.println("請輸入運算符:");  
        String oper = input.nextLine();  
        System.out.println("請輸入第二個運算數字:");  
        String str2 = input.nextLine();  
        double num1 = Double.parseDouble(str1);  
        double num2 = Double.parseDouble(str2);  
        Operation opertion = OperationFactory.getOperation(oper);  
        opertion.setNum1(num1);  
        opertion.setNum2(num2);  
        double result = opertion.getResult();  
        System.out.println(str1 + oper + str2 + "=" + result);  
    }  
}  
測試結果:
[java] 
----小C計算器程序----  
請輸入第一個運算數字:  
5  
請輸入運算符:  
-  
請輸入第二個運算數字:  
3  
5-3=2.0  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章