如何撰寫自己的設計模式 (Design Pattern)? 設計模式系列文 (中)

前言

本設計模式系列文上篇介紹了「什麼是設計模式?」與「設計模式的描述架構 」(對設計模式介紹有興趣的讀者可以參考上篇)。接著讀者可能有興趣開始自己撰寫的設計模式甚至完善並發表自會議論文等等。本文將引導讀者釐清撰寫 Pattern 時需要思考的脈絡,主要藉由上篇所舉的簡單範例 「如何讓人舒適的處在房間?」部份來說明撰寫設計模式的流程架構。而若讀者想要進一步完善自己所整理的設計模式 (或幫助自己在整理設計模式時考慮的更全面),甚至更進一步在 Pattern 相關的會議論文中投稿,可以參考本系列文下篇:「如何完善自己的設計模式?

何謂撰寫設計模式時需要的思考脈絡?

再次舉上篇所提到的「如何讓人舒適的處在房間?」的例子。

> 首先,我們要先確定目標的情境

我們要設計一個工作室,而這個工作室只有兩扇窗,幾張舒適的椅子,幾張難坐的椅子

> 再來,要確定我們的設計問題

如何讓工作室主人在一整天工作的時候感到舒服自在?

> 接著,讓我們來思考,影響上述問題發生的具體作用力 ,以形塑解決方案的邊界

1. 需要舒適的坐著2. 想要緊靠窗戶,才能偶爾看看窗外來紓解壓力

> 列出這些力 (Force)之後,可以讓我們開始設計解決方案

1. 需要舒適的坐著:在主要工作室主人要坐的位子,挑選舒適的椅子2. 想要緊靠窗戶:將工作室主人的辦工桌與椅子,盡可能的緊靠窗戶

> 為了更完整的說明解決方案,可以用畫圖的方式,列出工作室擺設的動態 (這個模式可能不需要)與靜態 (擺設圖,如下圖)關係

> 之後可以透過舉例 ,引導參考此模式的施工人員,實作本模式所提出的方法

例如:列出椅子的規格、窗戶和椅子的距離、擺放角度等等

> 為了證明此方案是有效的方案,也可以利用幾個經典的室內設計案例來佐證

> 而以上,大概完成了大部分的設計模式內容,可以透過列舉優點與限制來為設計模式做個總結

優點: 
可以使人長時間舒適的待在這樣的工作室工作
缺點:
選擇舒適的椅子,需要花費較高的成本
必須要存在高度不高的窗戶 (人坐著可以直接看到窗戶外面的高度)

> 最後,讓我們透過提出的解決方案的特徵來為此設計模式命名

椅子與窗戶的對向模式 (有點俗就是了XD)

以下列出設計模式撰寫時的思考邏輯脈絡

-> 界定情境 (Context)

-> 定義設計問題 (Problem)

-> 從設計問題中列出會影響該問題發生具體的力 (Force)

-> 依循所列出的 Force 來設計解決方法 (Solution)

-> 統整解決方法,以靜態 (Structure)與動態 (Dynamics)的描述方法表述之

-> 最後引導讀者實作 Pattern 並提出相關的範例 (Example)

-> 為了作證自己的Pattern的實用性,可以列舉已知應用 Pattern 中相似解法的例子 (Known uses)

-> 最後列出應用的該 Pattern 之後會產生的優點與限制 (Consequences)

-> 通常在 Pattern 完成之後可以依據 Pattern 的特性為 Pattern 命名 (Name),也可以邊撰寫時邊思考

結語

本文主要透過「如何讓人舒適的處在房間?」的簡單範例來引導讀者走過撰寫設計模式的思考流程,讀者不僅可以利用這樣的邏輯線來撰寫設計模式,更可以用以解決各個領域的設計問題,並發展出可行的解決方案。

若讀者想要繼續的完善自己的所發展的設計模式,並在撰寫設計模式時,考慮的更全面,可以參考本系列文下篇 「如何完善自己的設計模式?

💁延伸閱讀

非常感謝讀完本篇文章,希望本文能對你有些幫助,記得按拍手給我一些鼓勵,Medium 文章中一個人最多能按 50 下 XDD

喜歡我的文章的話也歡迎訂閱我的mediumfacebook,我會定期分享關於軟體工程的知識,還有在日本工作與生活的心得。

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Shun's Blog | 東京開發者生活
Shun's Blog | 東京開發者生活

Written by Shun's Blog | 東京開發者生活

東京涉谷IT企業軟體工程師 | 日本生活、軟體技術、科技趨勢、區塊鏈技術分享

No responses yet

Write a response