[DesignPatterns]二、簡單工廠模式(SimpleFactoryPattern)

參考書籍:大話設計模式

督促自己可以一步一步把書本好好看完學完,為未來做努力

簡單工廠模式

這是我看完後的想法,簡單工廠模式就是透過一個單獨類別去做判斷來new出指定的類別,前提時,這些需要new出的都是繼承於一個Class底下

書本上是以計算機加減乘除來做教學,而我自己也嘗試看書練習了出來


過去

在過去可能用一個Switch去搞定判斷各個邏輯所要計算的結果

缺點:這樣子使用的話,是有用到了封裝,但一旦運算邏輯多的時候,就要擔心是否會改錯改到其他邏輯


現在

一、先設計出每個運算邏輯的共通屬性以及增加一個可override的方法去改寫

二、接著建立Add和Sub的類別,並且繼承此共通類別

備註一:由於繼承時會將變數一併繼承,所以當我們去其他class繼承此class時,也就存在了NumA及NumB了

備註二:但建構式無法被繼承,需要使用base來做呼叫動作,在override vitural的function後,如果在繼承那頁要用到底層的function也需要記得使用base才可以呼叫

三、接著要怎麼讓計算機知道我們要使用哪一個運算邏輯呢?採用的就是Factory

簡單工廠模式就是透過一個單獨類別去做判斷來new出指定的類別,前提時,這些需要new出的都是繼承於一個Class底下

我們建立一個class去做統一控管,並且根據指定的運算子去new出指定的運算邏輯class

四、完成後,我們要開始使用這個Factory,宣告共通類別的變數並且呼叫此Factory的方法即可以完成(由於我們上面是有用到static,所以我們沒有在做new的動作)

Static的補充:

使用 static 關鍵字宣告的成員稱為「靜態成員

  靜態成員可讓同類別建立的物件都可一起共用

  靜態成員不需用 new 建立物件就可直接使用, 必須透過類別名稱再加上「.」運算子直接呼叫public 的靜態成員即可。

非靜態成員只有在使用時才會在主記憶體,否則會回到硬體去,資料也就跟著消失了。

但如果是靜態成員,會永遠跑在主記憶體上,資料也不會消失,所以可以不用new就可以叫用

Static補充參考網站:http://a7419.pixnet.net/blog/post/47082515-c%23-%E9%9D%9C%E6%85%8B%E6%88%90%E5%93%A1static


Github位置:https://github.com/Alan-Lun/DesignPatternsStudy