台灣最大程式設計社群網站
線上人數
1344
 
會員總數:245250
討論主題:189110
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> C#的AbstractFactory 模式,用來協助程式員將Object分類與集中管理的方法
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C#的AbstractFactory 模式,用來協助程式員將Object分類與集中管理的方法
價值 : 0 QP  點閱數:650 回應數:0

樓主

E-Troy 版主
初學者
80 52
283 11
發送站內信

在Java之中,Abstract這名詞,相信程式員對它都不默生,一個類別被定義時,可以僅宣告方法名稱而不實作當中的邏輯,這樣的方法稱之為「抽象方法」(Abstract method),如果一個類別中包括了抽象方法,則該類別稱之為「抽象類別」(Abstract class),抽象類別是個未定義完全的類別,所以它不能被用來生成物件,它只能被擴充,並於擴充後完成未完成的抽象方法定義。

在C#裡,微軟官方給予它的定義,略有不同 ,以下是微軟官方的說明:
abstract 修飾詞表示要修飾的項目遺失或實作不完整。 abstract 修飾詞可用於類別、方法、屬性、索引子 (Indexer) 和事件。 在類別宣告裡使用 abstract 修飾詞,表示該類別只是當做其他類別的基底類別而已。 成員如果標記為抽象,或是包含在抽象類別 (Abstract Class) 內,則必須由衍生自此抽象類別的類別實作這個成員。

在Design Pattern的思維裡,有一種運作結構,叫作「Abstract Factory」。
在複雜的程式架構中,將許多的組件加以分門別類,然後從中取出性質相似與功能相近的Object,使其集中,能夠簡化程式系統組件的複雜度。而 Abstract Factory 模式,正是用來協助程式員將Object分類與集中管理的方法。

以下是C# Abstract Factory的簡單範例:

上面的結構,基本上是Factory Pattern,也就是說,透過Interface,將IHouseA和IHouseB分別獨立出來,在經由IHouseFactory做管理,所以程式員只要更改個別的陳述句,並不會影響其它函式。

HouseA和HouseB分別繼承IHouseA和IHouseB,然後各別去建構自身的House裡的內容。但本質上是2個不同的House,只是裡面的裝飾,可以任君擺設,自行建構函式。

各個Class透過Abstract Factory的分門別類,再透過Interface各別獨立,只要透過繼承,程式員就可以輕易的修改而不影響流程架構。

搜尋相關Tags的文章: [ AbstractFactory ] , [ Object ] , [ C# ] , [ Class ] ,
本篇文章發表於2015-08-19 13:30
== 簽名檔 ==
上帝的藝術-電腦神手的領域 - http://etroy.pixnet.net/blog
上帝的藝術-微軟的神域 - http://etroy-com.blogspot.tw/
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.