Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

如何學好設計模式

1,728 views

Published on

近年來設計模式(Design Patterns)已經廣泛地應用在軟體開發的所有活動,從需求、分析、設計、實作、測試到流程,都有模式可遵循。

對許多開發人員而言,學習模式就好像背英文單字一樣,並不是一件輕鬆且容易駕馭的活動。

就算好不容易學會某些模式,也經常發生誤用模式或過度設計的問題。

本次敏捷小酒館將由泰迪軟體的Teddy Chen分享學習設計模式的經驗,介紹學習模式所需掌握的重點,讓你用全新的視野來檢視已知或未知的所有模式。

Published in: Software

如何學好設計模式

  1. 1. Teddy Chen teddy@teddysoft.tw http://teddy-chen-tw.blogspot.com Jan. 12 2018 @ 台中【敏捷小酒館】
  2. 2. Copyright@2012-2018 Teddysoft
  3. 3. • 經常聽到設計模式,到底什麼是設計模式? 可以吃嗎? • 想學設計模式但不知如何下手 • 好像學會了設計模式但不知如何活用 • 套了設計模式被老闆、主管或同事痛罵 – 時程很敢趕系統先可以動就好,以後有時間再 慢慢重構 – 你程式改成這樣誰看得懂啊! Copyright@2012-2018 Teddysoft
  4. 4. Copyright@2012-2018 Teddysoft 我的程式碼 來源:https://goo.gl/izaH4A
  5. 5. Copyright@2012-2018 Teddysoft 來源:https://goo.gl/DawfCk
  6. 6. Copyright@2012-2018 Teddysoft
  7. 7. Copyright@2012-2018 Teddysoft
  8. 8. A pattern is a proven solution to a recurring problem in a specific context, and more. Copyright@2012-2018 Teddysoft Context Machine Problem force force force Resulting Context Solution force force force Time
  9. 9. Copyright@2012-2018 Teddysoft
  10. 10. Copyright@2012-2018 Teddysoft 來源:youtube
  11. 11. Copyright@2012-2018 Teddysoft 來源:youtube
  12. 12. 請問: – MackBook Air – MackBook Pro 15” – iMac Pro 哪一台比較好? Copyright@2012-2018 Teddysoft
  13. 13. 我的系統套了87個模式, 請問這是一個好設計嗎? Copyright@2012-2018 Teddysoft
  14. 14. 「只知解法不知問題」 是誰害的? Copyright@2012-2018 Teddysoft
  15. 15. GoF 害的XD Copyright@2012-2018 Teddysoft
  16. 16. Copyright@2012-2018 Teddysoft
  17. 17. Copyright@2012-2018 Teddysoft Problem
  18. 18. Copyright@2012-2018 Teddysoft
  19. 19. • Intent – Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Copyright@2012-2018 Teddysoft
  20. 20. Copyright@2012-2018 Teddysoft
  21. 21. 請看例子 Copyright@2012-2018 Teddysoft
  22. 22. • 在macOS上將硬碟格式化成: – NTFS – FAT – FAT32 Copyright@2012-2018 Teddysoft 程式要怎麼寫? DriveManager format(fileSystem)
  23. 23. 這個設計好不好?為什麼? Copyright@2012-2018 Teddysoft
  24. 24. • 你可以把所有的演算法全部寫進同一個物件,然 後用條件式判斷來選用所要執行的版本,但是: – 程式碼很容易變得過於複雜與肥大,不好理解與修改。 – 擴充新的演算法必須要修改既有的程式碼。 – 不容易分別開發、修改與測試每一個演算法。 – 物件占用過多的記憶體空間,因為可能不會使用到全 部的演算法。 • 你可以透過繼承,讓子類被重新定義自己的演算 法。但是這樣會產生許多類似的類別,但僅僅只 有行為上些微的差別。 Copyright@2012-2018 Teddysoft
  25. 25. Copyright@2012-2018 Teddysoft Before After
  26. 26. Source: https://goo.gl/RD2l2m Copyright@2012-2018 Teddysoft
  27. 27. Force告訴我們為什麼模式所要解決的 「問題」是一個真正的問題—為什麼這 個問題很難,為什麼需要一個聰明的, 甚至是違反直覺的解決方案。Force也 是了解為何會採用此種解決方案的關鍵。 Copyright@2012-2018 Teddysoft
  28. 28. Copyright@2012-2018 Teddysoft 請分析 Forces 來源:https://goo.gl/q4WdSL
  29. 29. Copyright@2012-2018 Teddysoft 來源: 電影達摩祖師傳
  30. 30. Copyright@2012-2018 Teddysoft
  31. 31. Copyright@2012-2018 Teddysoft
  32. 32. Copyright@2012-2018 Teddysoft Source: 電影《星際大戰第四集》
  33. 33. Copyright@2012-2018 Teddysoft
  34. 34. Copyright@2012-2018 Teddysoft
  35. 35. 你感冒了去看西醫,醫生開了 特效藥給你,保證三天內感冒 可以痊癒,但此特效藥有傷胃 的副作用。怎麼辦? Copyright@2012-2018 Teddysoft
  36. 36. Copyright@2012-2018 Teddysoft
  37. 37. • 經常聽到設計模式,什麼是設計模式,可 以吃嗎? • 想學設計模式但不知如何下手 • 好像學會了設計模式但不知如何活用 • 套了設計模式反倒被老闆、主管或同事罵 – 時程很敢趕系統先可以動就好,以後有時間再 慢慢重構 – 你程式改成這樣誰看得懂啊! Copyright@2012-2018 Teddysoft
  38. 38. 還是覺得太抽象怎麼辦? Copyright@2012-2018 Teddysoft
  39. 39. 歡迎報名參加: Design Patterns這樣學就會了:入門實作班 2018年3月3、4、10日(六、日、六) Design Patterns這樣學就會了:進階實作班 2018年5月4、5、6日(五、六、日) Copyright@2012-2018 Teddysoft
  40. 40. Copyright@2012-2018 Teddysoft
  41. 41. 敏捷小酒館

×