[Design Pattern] 我們為什麼要 Design patterns?
為什麼我們需要 Design patterns?
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design (link)
就是針對常見的問題,我們有一套通用且可重用的解法,解決我們日常開發時,一些比較複雜的問題
Design patterns 解決的什麼層級的問題?
我們對於問題的思考可以分為不同層級來思考:
https://medium.com/omplexity/系統思考的核心-冰山模型-9fcdad880f33
- Events (事件):
「事件」是我們在日常生活中最常聽到的描述,它僅會呈現最淺白的內容。而人們面對「事件」所想出來的解決方式也是最直覺反應的,雖然可以在短時間內解決眼前的問題,但通常不會是長久之計。
- Pattern / Trends (趨勢): 「趨勢」則是事件累積起來的共同走向。當所有事件串連起來,就會出現重複性的動向。在觀察到「趨勢」之後,我們並不會嘗試改變這個動向,而是去順應它
- Structure (系統結構): 「系統結構」會促成我們前面提到的趨勢和事件。值得注意的是,系統結構可以是有形的也可以是無形的。相較於前述的緊急應變措施和嘗試適應,我們處理「系統結構」問題的方式是重新設計舊有的系統,或甚至創造一個新的系統
- Mental Models (心智模型): 「心智模型」的變化是在調整系統結構時相當關鍵的要素,因為我們必須要懷疑或甚至顛覆原本自己看待世界的方式,這其實是相當有難度的,畢竟一個人的心智模型是經年累月塑造而成的,若要踏出自己的心理舒適圈,需要相當大的努力和勇氣,才能夠自我省思,並且達到心服口服的改變
- Shared Vision (共同願景): 「共同願景」的建立不僅能夠促成心智模型的變化,還能夠創造出過去從來沒有出現過的想法或者狀態
範例:流浪狗事件處理
- Events (事件):
事件:根據新聞報導,每年大約有 2 萬起流浪狗咬傷就醫的案例。
應對方式:新聞媒體教育民眾不要逗弄流浪狗,且也盡可能不要在他們面前奔跑
- Pattern / Trends (趨勢):
趨勢:經過 6 個月的數據研究指出,在這個區域被流浪狗咬傷的案例佔了全台灣 20%。
應對方式:由於這個區域的案例數相對高,政府決定要在此地加設警示立牌,提醒民眾盡可能不要經過流浪狗聚集的空地或草叢
- Structure (系統結構):
系統結構:透過政府和民間保護動物團體進一步調查,發現這個區域的流浪狗結紮率相對較低,導致繁衍速度不斷提高,也因此會有越來越多的流浪狗。
應對方式:政府補助這個區域的流浪動物之家,妥善規劃流浪狗 TNR(誘捕、節育、放回)計畫,並且在可接受的範圍內收養容易攻擊民眾的流浪狗
- Mental Models (心智模型):
心智模型:為什麼結紮率相對來說較低呢?因為在這個區域,較多的民眾對於結紮持有反對意見,相信人類主動替動物結紮是不遵從生命繁衍自然法則的行為。
應對方式:超過環境負荷的流浪狗會有營養不良、疾病傳播等問題,為了避免這些惡性循環持續發生,應要教育社會大眾相關觀念
- Shared Vision (共同願景):
共同願景:學習尊重所有生命,並且創造一個所有生物共生共存的世界。
應對方式:從幼齡教育就開始倡導「領養代替購買」的願景,在養寵物之前應該做好各面向的評估,包含是否有足夠的活動空間、照顧寵物的時間和心力等,同時也要規劃更完善的轉介流程
結論
- Pattern 可以幫助我們在大結構 (Structure; Architecture) 不變動的情況下,解決日常常發生的一些問題