1. 程式人生 > >設計模式之簡單工廠模式學習

設計模式之簡單工廠模式學習

之前瀏覽了一遍大話設計模式,看的激情四射,感覺寫的很好,但是瞄了一遍感覺收穫不多,於是決定手敲遍各種模式程式碼,今天敲了一遍簡單工廠模式程式碼,收穫滿滿,獲益良多。

引用書中標題的一句話:

程式碼無錯就是優? --------------------------簡單工廠模式

首先是一個實現計算器的程式碼,

通過實現計算器程式碼,對比自己寫的和要用簡單工廠模式的對比了下:發現可維護性,可複用性,可擴充套件性和靈活性方面都不如按照簡單工廠模式設計的。

其實面向物件的分析設計程式設計思想就是考慮通過封裝,繼承,多型把程式的耦合度降低。

程式設計的一個原則就是儘可能的去避免重複。

我們需要的是複用而不是複製。

簡單工廠模式的深入理解:

簡單工廠模式要解決的問題是如何去例項化一個合適的物件。其核心思想就是有一個專門的類來負責建立例項的過程。

在這裡還稍稍接觸了下UML類圖。好像畫不了在這!!!

然後直接上程式碼(java)

//操作類

public class Operation {
    private double double_numberA;
    private double double_numberB;

    public double getDouble_numberA() {
        return double_numberA;
    }

    public void 
setDouble_numberA(double double_numberA) { this.double_numberA = double_numberA; } public void setDouble_numberB(double double_numberB) { this.double_numberB = double_numberB; } public double getDouble_numberB() { return double_numberB; } public double
getResult(double double_numberA, double double_numberB){ double result = 0; return result; } }

//繼承操作類的加法類,減法類,乘法類,除法類

public class OperationAdd extends Operation{

    @Override
    public double getResult(double numberA, double numberB){
        double result = 0;
        result = numberA + numberB;
        return  result;
    }

}
public class OperationSub extends Operation {
    @Override
    public double getResult(double numberA, double numberB){
        double result = 0;
        result = numberA - numberB;
        return  result;
    }
}
public class OperationMul extends Operation {
    @Override
    public double getResult(double numberA, double numberB){
        double result = 0;
        result = numberA * numberB;
        return  result;
    }
}
public class OperationDiv extends Operation {
    public double getResult(double numberA, double numberB){
        double result = 0;
        if(numberB == 0){
            System.out.print("除數不能是0");
        }else{
            result = numberA/numberB;
        }
        return  result;
    }
}

//操作工廠類

public class OperationFactory {
    public Operation createOperation(String operate,double numberA, double numberB){
        Operation oper = null;
        switch(operate){
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }

        return oper;
    }

}

至於介面操作程式碼就沒有寫的必要了。。。。。

總結

對於簡單工廠模式的業務背景

個人覺得首先要考慮能抽象出哪些類,其次要建個工廠例項化類的物件,還有就是搞一個父類或介面讓子類去重寫父類的方法。

找了個簡單工廠模式的實際應用場景摘自別人的部落格《程式設計是一門技術更加是一門藝術》

簡單工廠模式的實際應用簡介: 

       作為一個最基本和最簡單的設計模式,簡單工廠模式卻有很非常廣泛的應用,我們這裡以Java中的JDBC操作資料庫為例來說明。

        JDBC是SUN公司提供的一套資料庫程式設計介面API,它利用Java語言提供簡單、一致的方式來訪問各種關係型資料庫。Java程式通過JDBC可以執行SQL語句,對獲取的資料進行處理,並將變化了的資料存回資料庫,因此,JDBC是Java應用程式與各種關係資料進行對話的一種機制。用JDBC進行資料庫訪問時,要使用資料庫廠商提供的驅動程式介面與資料庫管理系統進行資料互動。

客戶端要使用使用資料時,只需要和工廠進行互動即可,這就導致操作步驟得到極大的簡化,操作步驟按照順序依次為:註冊並載入資料庫驅動,一般使用Class.forName();建立與資料庫的連結Connection物件;建立SQL語句物件preparedStatement(sql);提交SQL語句,根據實際情況使用executeQuery()或者executeUpdate();顯示相應的結果;關閉資料庫。