iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
3

此文同步於個人Blog

自從當上了工程師後,大多數時間都負責後端的程式開發,從最一開始設計api到現在sdk的經驗中,了解到一個好的程式架構及設計,不只可以讓後續維運成本降低,往後要擴充也會相對容易許多。

而對於程式架構,我認為沒有所為最好的架構,每個project都有適合自己的架構及設計,像遊戲的設計跟電商網站就不會一樣,所以選擇適合的工具是很重要的!

這系列文會從Design Principles、各種design pattern到最後的Anti-Patterns & Code Smells介紹下去,讓我們可以更了解各種pattern的使用時機與場合。

註:可以利用Online Java Compiler IDE來跑範例程式碼。

  • 什麼是Design Pattern?


在程式設計中,經常遇到相同的設計問題,許多設計可以解決這些重複出現的問題,但隨著時間推進,某些設計因為更加的靈活,而優於了其他的設計。而這些設計被整理歸類,進而發展出了Design Pattern。Design Pattern即是針對這些反覆出現的問題而提出的解決方案。

Design Pattern一書中介紹了 23 種模式,依照不同的狀況,使用不同的模式,解決不同的問題。而所謂的Design Pattern並非一組source code,他為一個概念。我們可以舉一個例子 - 西洋棋。

西洋棋的棋子有很多種類,每種棋子都有屬於自己的能力,新手棋士可能知道每個棋子基本怎麼使用,但有經驗的棋士不但知道每個棋子的基本用法,更知道了棋子間如何互相配合使用,在特定狀況使用特定的戰術可以更容易贏得比賽。

初學者開發人員就好比新手棋士,他們知道for loop、if-else...等等方法,但透過經驗的累積,他們開始知道如何搭配各種方法來建構及設計程式,讓程式不但可以重複使用也更加的靈活。

為什麼會說特定?

這邊並不是說只能在特定狀況下贏,而是如同剛剛講到的,依照不同的狀況,使用不同的模式,解決不同的問題。

  • 為什麼要使用Design Pattern?


Design Pattern為一些專家,歷經無數的錯誤及試驗而得到的結果。

我們舉一個例子,小學我們都學過如何把1加到100。我們可以怎麼做??

方法一:土法煉鋼直接從頭加

1+2+3...+100

方法二:已知的數學公式

n(n+1)/2

很明顯,方法二已經有一個“公式”可以幫助我們快速的解決問題,不但簡化過程也節省了時間。
但只是節省過程與時間嗎??

我們把問題再做延伸,假設今天需要更改成相加1000個數字,那我們該怎麼辦??

方法一依舊要從1加到1000,但方法二只需要把n改成1000。

這樣的差距,就很像我們在程式開發過程中,突然有需要做變更或是新增需求,如果有使用合適的design pattern,便可輕鬆解決很複雜的問題。

所以使用Design Pattern目的,除了建立良好的軟體系統外,不管在未來維護程式或是新增需求,都可以大大節省我們的時間及精力。

  • 小結


所以什麼是Design Pattern?
Design Pattern並不直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種"方案"
為什麼要使用Design Pattern?
為了建立一個方便維護及擴充的軟體系統。
  • References


設計模式


下一篇
[Day02] Design Pattern的原則與類型
系列文
從生活中認識Design Pattern30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言