最近在看程傑著作的《大話設計模式》,全書以小菜和大鳥對話的形勢,由淺入深的講解程式的設計思想,影射出一個個設計模式。我之前雖然也使用過一些設計模式,但沒有系統的學習、整理、總結,現從該書入手,拟補自己技術領域的一塊空白。該書雖以C#語言為基礎,但對Java程式猿來說,卻不影響閱讀。本專欄記錄自己學習設計模式的過程及自己的認識,争取從小菜蛻變成大鳥。
從設計模式的類型上來說,簡單工廠模式是屬于建立型模式,又叫做靜态工廠方法(Static Factory Method)模式,簡單工廠模式是由一個工廠對象決定建立出哪一種産品類的執行個體。簡單工廠模式是工廠模式家族中最簡單實用的模式。
使用Java來編寫一個電腦控制台程式,要求輸入兩個數和運算符号,得到結果。
上面的程式實作了最基本的四則運算,并對基本的異常進行了處理,還可以循環運算。假如說我别處也需要一個運算的程式,還需要再寫一份,難複用。我們需要一份可以複用的代碼!
上面的程式将電腦的代碼封裝到一個方法中,供用戶端調用,這樣如果存在多個用戶端,隻需要調用這個方法即可,實作了代碼的可複用。那麼現在我們把這個工具類編譯後,其他人就可以使用了,假如說現在需要添加一個新算法,求A的B次方,我們就需要修改這個類的源代碼,在getResult中加入新的分支,然後重新編譯,供用戶端使用,難擴充。
上面的代碼先建立了一個抽象類Operation,然後建立了加減乘除四個子類,分别實作其運算方法,如果以後需要修改某種運算,隻需要去修改相應的類即可,如果需要增加某種運算,隻需要去實作Operation的getResult方法即可,那麼,我們還需要一個建立運算類的工廠。
用戶端代碼
将建立對象的工作交給工廠負責,使用戶端調用和運算類解耦,當我們更改運算類時,用戶端代碼不會受到影響,也不需要修改。同時将電腦程式中的多個分支判斷拆成了各個類,當分支判斷中邏輯過于複雜時,這樣做是非常好的。使用面向對象語言的特性(封裝、繼承、多态),以優雅的方式解決了可複用、可維護、可擴充等問題。

一個小小的電腦程式竟然可以寫的這麼perfect,程式設計是一門技術,更是一門藝術。在編寫代碼的過程中,要牢記可複用、易維護、好擴充,這樣,自己才能有所提高,才是真正的軟體工程師。