Submit Search
Upload
設計模式的解析與活用:分析
•
10 likes
•
1,180 views
Kane Shih
Follow
『設計模式的解析與活用』一書之讀後心得分享
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 18
Download now
Download to read offline
Recommended
策略模式
策略模式
Jen-Hsuan Hsieh
Design pattern strategy pattern 策略模式
Design pattern strategy pattern 策略模式
Bill Lin
Design & Thinking in Luster
Design & Thinking in Luster
Jason Chung
Maker in Luster
Maker in Luster
Jason Chung
前端魔法師召集令
前端魔法師召集令
Jason Chung
Design Pattern - Factory Pattern
Design Pattern - Factory Pattern
Li-Wei Yao
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
ykdsg
Factory Patterns
Factory Patterns
Jamie (Taka) Wang
Recommended
策略模式
策略模式
Jen-Hsuan Hsieh
Design pattern strategy pattern 策略模式
Design pattern strategy pattern 策略模式
Bill Lin
Design & Thinking in Luster
Design & Thinking in Luster
Jason Chung
Maker in Luster
Maker in Luster
Jason Chung
前端魔法師召集令
前端魔法師召集令
Jason Chung
Design Pattern - Factory Pattern
Design Pattern - Factory Pattern
Li-Wei Yao
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
ykdsg
Factory Patterns
Factory Patterns
Jamie (Taka) Wang
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRuby
Matthew Gaudet
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
Kris Mok
Implementing a JavaScript Engine
Implementing a JavaScript Engine
Kris Mok
Cs 1023 lec 9 design pattern (week 2)
Cs 1023 lec 9 design pattern (week 2)
stanbridge
Factory Pattern in Luster
Factory Pattern in Luster
Jason Chung
Java常见问题排查
Java常见问题排查
bluedavy lin
第一期B類_國立臺灣大學─未來都會與大學創新學習系統
第一期B類_國立臺灣大學─未來都會與大學創新學習系統
大學創新計畫 辦公室
面向模式的软件体系架构
面向模式的软件体系架构
Weijun Zhong
Design Patterns in Luster
Design Patterns in Luster
Jason Chung
JCConf TW 2014 - Modern Design Pattern
JCConf TW 2014 - Modern Design Pattern
Steven Wang
线上问题排查交流
线上问题排查交流
Edward Lee
AI機器人正夯
AI機器人正夯
佳新 陳
Why Chatbot? 為何開發聊天機器人?
Why Chatbot? 為何開發聊天機器人?
Burton Chau
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
Chen Cheng-Wei
如何透過聊天機器人(Chatbot)來翻轉企業與客戶溝通方式&【凡事都有個 Bot:虛擬篇】聊天機器人的前世今生 | 20160918 科技時事報導
如何透過聊天機器人(Chatbot)來翻轉企業與客戶溝通方式&【凡事都有個 Bot:虛擬篇】聊天機器人的前世今生 | 20160918 科技時事報導
貫中 侯
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
Chen Cheng-Wei
Track B-3 解構大數據架構 - 大數據系統的伺服器與網路資源規劃
Track B-3 解構大數據架構 - 大數據系統的伺服器與網路資源規劃
Etu Solution
10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were Possible
Lukas Eder
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
topgeek
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
areyouok
金字塔原理(清晰版)
金字塔原理(清晰版)
mumu337
More Related Content
Viewers also liked
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRuby
Matthew Gaudet
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
Kris Mok
Implementing a JavaScript Engine
Implementing a JavaScript Engine
Kris Mok
Cs 1023 lec 9 design pattern (week 2)
Cs 1023 lec 9 design pattern (week 2)
stanbridge
Factory Pattern in Luster
Factory Pattern in Luster
Jason Chung
Java常见问题排查
Java常见问题排查
bluedavy lin
第一期B類_國立臺灣大學─未來都會與大學創新學習系統
第一期B類_國立臺灣大學─未來都會與大學創新學習系統
大學創新計畫 辦公室
面向模式的软件体系架构
面向模式的软件体系架构
Weijun Zhong
Design Patterns in Luster
Design Patterns in Luster
Jason Chung
JCConf TW 2014 - Modern Design Pattern
JCConf TW 2014 - Modern Design Pattern
Steven Wang
线上问题排查交流
线上问题排查交流
Edward Lee
AI機器人正夯
AI機器人正夯
佳新 陳
Why Chatbot? 為何開發聊天機器人?
Why Chatbot? 為何開發聊天機器人?
Burton Chau
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
Chen Cheng-Wei
如何透過聊天機器人(Chatbot)來翻轉企業與客戶溝通方式&【凡事都有個 Bot:虛擬篇】聊天機器人的前世今生 | 20160918 科技時事報導
如何透過聊天機器人(Chatbot)來翻轉企業與客戶溝通方式&【凡事都有個 Bot:虛擬篇】聊天機器人的前世今生 | 20160918 科技時事報導
貫中 侯
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
Chen Cheng-Wei
Track B-3 解構大數據架構 - 大數據系統的伺服器與網路資源規劃
Track B-3 解構大數據架構 - 大數據系統的伺服器與網路資源規劃
Etu Solution
10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were Possible
Lukas Eder
Viewers also liked
(19)
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRuby
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
Implementing a JavaScript Engine
Implementing a JavaScript Engine
Cs 1023 lec 9 design pattern (week 2)
Cs 1023 lec 9 design pattern (week 2)
Factory Pattern in Luster
Factory Pattern in Luster
Java常见问题排查
Java常见问题排查
第一期B類_國立臺灣大學─未來都會與大學創新學習系統
第一期B類_國立臺灣大學─未來都會與大學創新學習系統
面向模式的软件体系架构
面向模式的软件体系架构
Design Patterns in Luster
Design Patterns in Luster
JCConf TW 2014 - Modern Design Pattern
JCConf TW 2014 - Modern Design Pattern
线上问题排查交流
线上问题排查交流
AI機器人正夯
AI機器人正夯
Why Chatbot? 為何開發聊天機器人?
Why Chatbot? 為何開發聊天機器人?
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
從 DevOps 到 ChatOps:War Room、Bots 與 Automation
如何透過聊天機器人(Chatbot)來翻轉企業與客戶溝通方式&【凡事都有個 Bot:虛擬篇】聊天機器人的前世今生 | 20160918 科技時事報導
如何透過聊天機器人(Chatbot)來翻轉企業與客戶溝通方式&【凡事都有個 Bot:虛擬篇】聊天機器人的前世今生 | 20160918 科技時事報導
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
Track B-3 解構大數據架構 - 大數據系統的伺服器與網路資源規劃
Track B-3 解構大數據架構 - 大數據系統的伺服器與網路資源規劃
10 SQL Tricks that You Didn't Think Were Possible
10 SQL Tricks that You Didn't Think Were Possible
Similar to 設計模式的解析與活用:分析
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
topgeek
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
areyouok
金字塔原理(清晰版)
金字塔原理(清晰版)
mumu337
事件風暴-領域建模
事件風暴-領域建模
國昭 張
金字塔原理培训演示教材
金字塔原理培训演示教材
明镜 王
金字塔原理培训演示教材
金字塔原理培训演示教材
明镜 王
數據特性 vs AI產品設計與實作
數據特性 vs AI產品設計與實作
Albert Y. C. Chen
Similar to 設計模式的解析與活用:分析
(7)
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
腾讯大讲堂05 面向对象应对之道
金字塔原理(清晰版)
金字塔原理(清晰版)
事件風暴-領域建模
事件風暴-領域建模
金字塔原理培训演示教材
金字塔原理培训演示教材
金字塔原理培训演示教材
金字塔原理培训演示教材
數據特性 vs AI產品設計與實作
數據特性 vs AI產品設計與實作
設計模式的解析與活用:分析
1.
2015/03/03讀書會分享 設計模式的解析與活用: 分析 Kane
2.
大綱 為何需要分析 怎麼分析 封裝變化 共通性及可變性分析 關係矩陣 循序圖
3.
為何需要分析? 寫程式就像蓋房子 為了符合spec 為了不要有bug 為了能應付spec變動 不想只當程式打字員 可以叫別人當打字員
4.
怎樣才算好的分析? 能做出以後都不用修改的架構! 怎麼可能!?
5.
怎麼做才能接近目標? 封裝變化 新的變動只需衍生類別,頂多微幅調整,架構基本不動 一個物件不用處理多種變化 → 高內聚 物件之間關係更清楚,可免不必要的牽連
→ 鬆耦合
6.
如何找到變化? 結構分析 找出共通性及可變性 假設變化將會出現 並嘗試預測其出現的位置 不要鐵齒!
7.
找到共通性及可變性之後... 找出高層次設計 套用現有模式(pattern)或自己來 定義抽象類別(共通性) 責任、介面、協定 定義衍生類別(可變性) 如何實作這個變化? Design Patterns 其實就是前人經驗集成的 免付費工具包
8.
共通性和可變性分析 (CVA) 尋找共通性(每個共通性一個問題) 從共通性中建立抽象 從共通性的變化尋找衍生 看共通性之間的關係如何
9.
分析矩陣(Analysis Matrix) 舉例:訂單處理系統 情況 過程 美國
根據UPS費用計算運費 使用美國郵政規則驗證地址 依當地計算銷售額和 /或服務的稅額 用美元處理金額 加拿大 用加拿大元處理金額 使用加拿大郵政規則驗證地址 透過聯邦快遞發貨到加拿大 依加拿大省的稅收規則計算銷售額和 /或服務的稅額(使用GST或PST)
10.
分析矩陣 美國銷售 加拿大銷售 計算運費 依照UPS費率
依照聯邦快遞費率 驗證地址 使用美國郵政規則 使用加拿大郵政規則 計算稅額 使用美國和當地稅收規則 使用GST和PST 金額 美元 加拿大元
11.
分析矩陣:擴展 美國銷售 加拿大銷售 德國銷售 計算運費
依照UPS費率 依照聯邦快遞費率 依照德國貨運公司費率 驗證地址 使用美國郵政規則 使用加拿大郵政規則 使用德國郵政規則 計算稅額 使用美國和當地稅收規則 使用GST和PST 使用德國增值稅 金額 美元 加拿大元 歐元 日期格式 mm/dd/yyyy mm/dd/yyyy dd/mm/yyyy 最大重量 30千克 所謂的變化…
12.
分析矩陣:列&行 美國 銷售 加拿大 銷售 德國 銷售 計算 運費 計算費率的具體實作 驗證 地址 驗證地址的具體實作 計算 稅額 計算稅額的具體實作 金額 使用Money物件 日期 格式 使用Data物件 最大 重量 最大重量的具體實作 美國 銷售 加拿大 銷售 德國 銷售 計算 運費 有美國顧客時, 使用這些實作。 有加拿大顧客時, 使用這些實作。 有德國顧客時, 使用這些實作。 驗證 地址 計算 稅額 金額 日期 格式 最大 重量
13.
高層次設計 +makeCalcTax() +makeCalcFreight() +makeAddrRules() AbstractFactory USAF CanAF GerAF USFreight
CanFreight GerFreight CalcFreight USAddr CanAddr GerAddr AddrRules USTax CanTax GerTax CalcTax SalesOrder TaskController 相依 聚合 has-a 繼承 is-a SalesOrder只知道什麼?不知道什麼? TaskController呢?
14.
循序圖 :TaskController :USAF SalesOrder
:USAddr :USFreight :USTax 1: init 2: init giving USAF 3: makeAddrRules 4: init 5: return 6: verify address 7: makeCalcFreight 8: init 9: return 10: calculate freight 11: makeCalcTax 12: init 13: return 14: calculate tax
15.
封裝變化與責任 +makeCalcTax() +makeCalcFreight() +makeCalcAddrRules() AbstractFactory USAF CanAF GerAF USFreight
CanFreight GerFreight CalcFreight USAddr CanAddr GerAddr AddrRules USTax CanTax GerTax CalcTax SalesOrder TaskController知道有美國來的訂單 不用知道訂單要做哪些處理 不用知道各種訂單處理規則 知道要檢查地址、計算稅率、計算運費… 不用知道實際上怎麼檢 查怎麼計算
16.
分析矩陣:子矩陣 美國銷售 加拿大銷售 計算運費 依照美國費率
依照加拿大費率 驗證地址 使用美國郵政規則 使用加拿大郵政規則 計算稅額 使用美國和當地稅收規則 使用GST和PST 金額 美元 加拿大元 計算運費 使用美國郵政 UPS 聯邦快遞 驗證地址 使用美國郵政規則 使用美國郵政規則(無郵箱) 使用美國郵政規則 上門取貨費 不適用 $5.00 $4.00 超重限額 50磅 70磅 無限制
17.
總結 討論高層次設計的共同語言 多看、多做、多討論、多累積
Download now