來一個解決問題的公式 – Design Patterns 這樣學就會了心得

Image

今天(2015/06/07)上了Teddy的Design Pattern 這樣學就會了- 入門實作班第一天課程投影片)。本課程主要客群是軟體工程師,讓工程師能在做開發時用更有效的方法來做出易讀,易了解,易維護,易擴充的程式,畢竟程式是給人看的。第一天的課程著重在設計模式(Design Pattern)的觀念導入,程式實作的部分在第二天跟第三天。

感覺很多軟體設計的Pattern好像可可以用在做事情和組織設計上。這個課程也有一日卷,適合工程師以外,對設計和問題定義有興趣的朋友參加。


課程摘要

軟體設計的產出是程式還是文件?你覺得軟體的產出是哪個,時間就會放在那裡。

關於設計

好的設計定義:Context和Form間的契合度高。Fitness between context and form。

設計模式的簡單定義:Relationship between a certain context, a problem, and a solution.

別人的設計就是最好的設計(站在巨人的肩膀上)。

為什麼需要Design Patterns

  1. Pattern已經考慮了情境跟Force,可以直接套用。
  2. 可以幫助團隊溝通共同的語言。
  3. A pattern is a proven solution to a recurring problem in a specific context。

模式的定義:

  1. 一再重複出現的東西,事件,現象。
  2. A pattern is a process and a thing

設計模式的六大基本元素

  1. Name:模式名詞(名詞或動詞)
  2. Context:描敘問題發生的上下文
  3. Problem:描敘問題本身
  4. Force:塑造與影響問題的原因
  5. Solution:解決問題的方法
  6. Resulting Context(Consequence):套用解決問題後的結果

範例:便利商店點數積點

  1. Name:
    1. 來更多花更多
  2. Context:
    1. 便利商店的市場競爭激烈,選擇又多,要讓消費者持續來店越來越困難
  3. Problem:
    1. 如何讓消費者更經常來店,并增加每次購物金額?
  4. Force:
    1. 來便利商店買東西的原因是順便,相較量販店或雜貨店,每次購物金額不高
    2. 每個廠牌的便利商店差異不大
  5. Solution:
    1. 提供每N元集一點(N = 平均購物金額X 110%)
    2. 每次活動期間1-1.5個月
    3. 用點數兌換或加購贈品
    4. 提供有獨特性的贈品
  6. Resulting Context(Consequence):
    1. 單次消費金額提高
    2. 增加黏著度
    3. 太多活動造成冷感
    4. 因為贈品才來消費
    5. 活動結束後,來店意願下降

常見的軟體設計Pattern

  1. Analysis Pattern
  2. Software Architecture Pattern
  3. Design Pattern
  4. HCI Pattern (Human, Computer Interface)
  5. Implementation Pattern
  6. Refactoring

Pattern Based Design 的特性

  1. 整體先於部分,然後透過差異化的過程將整體逐步展開
  2. 分散式行動
  3. 單一心智
  4. 不需繁複設計圖
  5. 一次一個模式的展開過程
  6. 考慮到修復

物件導向設計觀念

  1. Class, Object, Instance
  2. Interface
  3. Inheritance
  4. Polymorphism
    1. 由接收訊息這決定意義,如同日常溝通一樣
  5. Composition
  6. Delegation

物件導向設計原則

  1. 模組化
  2. 減少耦合,增加內聚
  3. 尋找Hot Spot
    1. 先從人多的地方改善
  4. 生物多樣性原則
  5. Programming to an Interface, not an Implementation
    1. 單位間重點在資訊的交流,不是在對方具體的實現方式
  6. Favor object composition over class inheritance

GoF Design Patterns

  1. Singleton
    1. 在一個系統中只可以有一個存在,就套Singleton。組織中只能有一個的單位應該是HR吧,有多過一個HR會造成升遷等標準混亂。
  2. Observer
  3. State
  4. Facade
  5. Template Method
  6. Factory Method
  7. Abstract Factory
  8. Command
  9. Adapter
  10. Strategy
  11. Composite

延伸閱讀:

  1. Agile Software Development
  2. Object Oriented Software Construction

作者: Yves Lin

Trying being agile in the fun way. 喜歡并相信敏捷,期許能帶入一些不同的思維,能讓華語圈不只軟體產業,都可以更敏捷。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s