設計模式之——抽象工廠討論內容

trufun 9:39:47
大家好,UML網上課堂開課啦
A()  9:41:34
哪裏
阿門()  9:42:28
今天主題是什麼?
trufun 9:44:00
根據上幾次臨時課的測試,我們感覺希望學習設計模式的人多於想學UML,這可能是由於去年講過UML,所以我們改爲講設計模式
A()  9:44:47
繼續
阿門()  9:45:12
沒錯
A()  9:45:58
設計模式很有意思
trufun 9:46:40
今天接着上兩堂課內容繼續講,今天先講第一個模式:抽象工廠
我已被盜(759056164)  9:47:28
這個好
阿門()  9:47:39
Thxs
A()  9:50:06
怎麼不繼續了
trufun 9:51:10
首先讓我們回顧一下上堂課的內容:在設計模式中有兩種類,一個是實體類,另一個是輔助類,實體類從需求中來,而輔助類是根據需要添加的,不同模式有不同的添加
品味從容()  9:53:01
實體類則爲抽象基類?
trufun 9:53:21
不對
trufun 9:53:59
請看上堂記錄
A()  9:54:25
都沒有看到上堂
trufun 9:56:15
首先我們討論抽象工廠這種模式想達到的目的,這是我們應用設計首先要考慮的問題:意圖
A()  9:56:39

trufun 9:58:38
在面向對象編程中,對於類,我們首先要實例化,這樣才能使用它的屬性和方法
品味從容()  9:59:18
這沒錯
trufun 10:01:02
如果類之間沒有關係(關聯等);先實例化那個類,後實例化那個類沒有關係
trufun 10:04:24
但是,類之間往往存在着複雜的依賴關係,要實例一個類,首先要實例化它內部依賴的其他類
A()  10:04:41
你說的是子類
A()  10:05:21
哦,不對,我理解了,是類中引用其他類
trufun 10:05:33
子類只是一種
A()  10:05:54

樂百氏(14048124)  10:07:57
包括聚合、組合、關聯引用吧
trufun 10:09:54
比如手電類要實例化,必須依賴於電池類先實例化,否則,手電類的發光方法(依賴電池類)就無法實現
webmaster()  10:10:55

=========大家可向企業推薦trufun的內訓課程,可獲贈蘋果ipad或者iPhone 4S產品!========

trufun 10:15:37
在軟件開發中存在着大量的這樣的關係,這種實例化的需求並不是固定的,是隨着客戶端的操作在隨時變化
trufun 10:18:18
爲了解決這個問題,人們總結出一種設計模式,叫抽象工廠,用它來解決複雜系統類的實例化問題
trufun 10:21:50
總結:1.類之間有關係,所以實例化有順序,2.編程並不是先把所有類都實例化好以後才使用,而是根據客戶端得操作動態實例化
webmaster()  10:23:57
老師同時兼顧好幾個羣的課程,所以會慢一點
trufun 10:23:58
設計模式意圖:提供一個創建一系列相關或依賴對象的接口,而無需知道內部的實現類。即客戶端只和抽象類定義的接口交互,而不和具體類定義的接口交互
webmaster()  10:24:11
不過大家剛好可以多參與討論
webmaster()  10:24:39
另外也可以多瞭解trufun針對企業推廣的一些列UML相關課程,
webmaster()  10:25:03
包含需求、分析設計、架構、測試、設計模式、複用等高端課程
webmaster()  10:25:34
可以快速解決企業問題,大家可以向企業推薦選擇以上課程
trufun 10:28:46
爲了解決實例化的問題,我們必須加入輔助類,這個輔助類就是我們上堂課介紹的接口和抽象類
樂百氏(14048124)  10:30:25
輔助類的添加,就按設計模式的標準來配置就行了吧?
webmaster()  10:30:32
推薦3天的企業內訓,就可獲贈trufun送出的蘋果iPad一臺!
trufun 10:31:01
請大家到下列地址去看模型圖: http://blog.sina.com.cn/s/blog_a1c79d4801014gdu.html
webmaster()  10:31:11
推薦5天的企業內訓,可獲贈蘋果iPhone 4S一部
trufun 10:31:32

trufun 10:34:02
大家從模型圖中找出實體類和輔助類
trufun 10:36:51
實體類只有產品A1,A2,B1,B2,並且B1,B2依賴於A1,A2
trufun 10:40:54
另外一個實體類是客戶端類,它動態實例化有關,其餘都是輔助類
trufun 10:46:05
這些輔助類的作用實質上是創建責任的分配,就是由哪個類創建那個類
trufun 10:49:09
說的再白一點,客戶端動態操作變化,這個變化傳遞給輔助類,又它決定先實例化那個類,後實例化那個類
trufun 10:52:19
這些類有的資料叫做產品族,或者層次結構產品
trufun 10:54:47
有兩個抽象產品類就是產品族的概念
trufun 10:58:10
上堂課我們講過,我們的設計模式的課側重於模型,從第三要素,角色職責討論設計模式
trufun 11:03:05
那麼,在抽象工廠中有哪些角色呢,我們先從實體類看起,就是A類產品和B類產品角色,B類依賴於A類,另一個是客戶端角色
trufun 11:08:18
在輔助類中,分爲產品和工廠兩部分,產品類主要是A,B兩類產品的接口,實現對實例化的封裝
trufun 11:15:29
另一個角色抽象工廠,它封裝了要實例化那一個系列的產品,以滿足客戶端調用的要求
trufun 11:16:31
還有兩個輔助類是抽象工廠的實現類,它動態決定具體實例化那個系列產品
trufun 11:20:26
電池和手電就象我們剛纔例子中A,B產品,產品系列就象普通手電和高檔手電這樣的產品系列
A()  11:22:33
形象
trufun 11:22:48
謝謝
trufun 11:24:18
所以左上角的抽象工廠三個類,就是解決產品系列的問題,並滿足客戶端的調用
trufun 11:27:31
右下角的輔助類,主要解決產品族的問題,並滿足產品系列實現的調用
trufun 11:29:47
前面我們討論的是抽象工廠的角色和職責,是設計模式第三要素
trufun 11:32:51
有了角色和職責這些靜態內容,你可能要問這幾個類是這樣配合來滿足客戶端得變化呢?
trufun 11:35:38
我們用通訊圖反映這個動態過程:地址: http://blog.sina.com.cn/s/blog_a1c79d4801014gdw.html
trufun 11:39:52
今天的課就到這裏,下堂講工廠方法
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章