emmm......之所以寫這個系列,是因為想去高階,感覺寫自己**不夠精簡,亢沉臃腫;想寫好寫優雅寫優秀,卻不知道是不是優秀,模稜兩可的感覺;想去入手原始碼,卻不知道從拿下手,又或者說看不懂,為什麼這麼寫。僅屬個人理解,如果有誤,歡迎各位指正^_^所以想入手設計模式系列,當然這些理解或者示例**是建立在《大話設計模式》——程杰著的基礎之上的。感覺這本書還是值得推薦的_
在未接觸到設計模式之前,你的**或許是這樣的:
/**(模擬乙個計算器的功能)*/
public class general else
}catch (exception ex)
}public static string getresult(double strnumbera, string opera, double strnumberb, string result)
return result;
}}
其實,乍一看這段**也沒什麼問題,並且也運用到了物件導向三大特徵——封裝,而且也捕獲了異常,按道理也挺完善了,但是,如果讓你同時用到物件導向的三大特徵呢?又或者說這個**能否做到靈活的修改和擴充套件呢?
從以上**你也可以看出,耦合性很高,每次拓展乙個功能(比如我在增加個冪運算),都要在switch加乙個分支,從而導致加減乘除運算都得重新編譯,而且是在原寫好的類上修改,極不利於維護和拓展。
而此時,如果你用到了簡單工廠模式,就可以巧妙的避開這些。
優點:
解耦:呼叫方不用負責物件的建立,只需要使用,明確各自的職責;運用簡單工廠模式改造的思路如下:維護方便:後期如果建立物件時需要修改**,也只需要去工廠方法中修改,易拓展;
定義元資料類(抽象類,不需要例項,需要子類重寫),運用到了封裝;具體**實現:具體實體類(加減乘除類)運用到了繼承;
簡單工廠類(選擇傳來的是加減乘除哪乙個演算法)運用到了多型。
定義元資料類:
public abstract class metadata
定義具體實現類:
//加法
public class metadataadd extends metadata
}
//減法
public class metadatareduce extends metadata
}
//乘法
public class metadatamul extends metadata
}
//除法
public class metadatadivision extends metadata
}
簡單工廠類
public class metadatafactory
return metadata;
}}
這樣下來,如果你增加乙個冪運算,直接在工廠類裡面新增乙個switch分支,在建立乙個冪演算法。而這樣對於日後的維護和擴充套件會更加友好。
大話設計模式 簡單工廠模式
學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...
大話設計模式 簡單工廠模式
最近在學習 大話設計模式 這本書,此本生動易動,其中有一些例子,我把 分寫如下。大話設計模式 無錯便是優?簡單工廠模式 下面以 乙個計算器的實現 operation運算類 public abstract class operation public void setnumbera public do...
大話設計模式 簡單工廠模式
乙個 概念 簡單工廠模式 factory pattern 它屬於建立模式,又稱靜態工廠方法模式 static factorymethod pattern 可是不屬於23gof設計模式之中的乙個。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。二 uml圖 簡單工廠主要分為三個角色 工廠 c...