iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
3
自我挑戰組

初探設計模式系列 第 1

[ Day 1 ] 我為什麼想學設計模式 ( Design Pattern )

前言


我目前是android工程師,
中途轉職開發軟體有一年左右的時間,
雖然工作了也不算短的時間,
不過很多時候是找google複製貼上別人的code,
或是找現有的庫來滿足需求,
看到在github上各種專案,
很羨慕大家能夠互相交流,
希望未來有一天能夠在上面也貢獻自己的程式碼。

但是這有一些前提的知識點需要了解...

例如:

  1. Version Control System
    • git
    • git flow
    • github flow
  2. Software Architecture
    • clean code
    • clean architecture
    • design pattern

如果不了解上面各個知識點,在與別人合作的過程中一定困難重重...
除了這些根據你想貢獻的issue和專案還有更多的需要突破的難關,
但是上面提到的兩點需要熟悉運用,才有基礎可以貢獻自己的程式碼!

希望在經過這30天的挑戰後能距離大神們更近一點!

接下來規劃每天介紹一種設計模式,
還有一些天數可以做一些補充又或許是更深入的解析。

嘗試30天進入軟體設計之窗~

什麼是設計模式

軟體工程中,設計模式(design pattern)是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。這個術語是由埃里希·伽瑪(Erich Gamma)等人在1990年代從建築設計領域引入到電腦科學的。

設計模式並不直接用來完成程式碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種方案。物件導向設計模式通常以類別物件來描述其中的關係和相互作用,但不涉及用來完成應用程式的特定類別或物件。設計模式能使不穩定依賴於相對穩定、具體依賴於相對抽象,避免會引起麻煩的緊耦合,以增強軟體設計面對並適應變化的能力。

並非所有的軟體模式都是設計模式,設計模式特指軟體「設計」層次上的問題。還有其他非設計模式的模式,如架構模式。同時,演算法不能算是一種設計模式,因為演算法主要是用來解決計算上的問題,而非設計上的問題。

-- by wikipedia 設計模式 (電腦)

上面這段文章摘錄是wikipedia對於設計模式的說明。

接下來的30天會針對設計模式做各個pattern的介紹和實作,分享自己有關於設計模式的理解,並且期望在熟悉之後對於整個軟體設計的過程,和程式碼的邏輯有一個通盤性的了解,期望未來在接觸到相似的軟體架構或是程式碼時,可以快速的理解別人編寫程式碼的概念。

除了閱讀別人的程式碼、函式庫外,期望未來在軟體設計上,有一個可以依據的程式架構概念,讓自己所撰寫的程式碼容易閱讀,並且可以簡單的修改擴充,另外對於軟體架構上有更近一步的理解,而一步一步的提升自己抽象化程式碼的能力,也就是提升自己對於程式設計、系統設計、架構設計的觀念,和程式思維的訓練。

文章摘錄

其中各個模式的實作會以Java來實現。

設計模式一共分為下面三種:

建立型模式

結構型模式

行為型模式

雜談

另外還有一些沒辦法被分類的文章


下一篇
[ Day 2 ] 初探設計模式 - 工廠方法模式 (Factory Method Pattern)
系列文
初探設計模式30

尚未有邦友留言

立即登入留言