iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0

為什麼要了解設計模式

當我說"沉默螺旋"(spiral of silence),你知道我在說什麼嗎?

你如果知道,我就不用解釋繼續講下去,甚至可以在這基礎上,直接討論可能的方法解決「沉默螺旋」。

當我們的code寫得越來越來,架構越來越龐雜,設計模式可以幫助我們找出解決方法,
寫出更好更優雅的程式碼,
並且讓我們討論的過程更快、更有效率。(當我說創造者模式,你就知道概念了。)

了解,使用設計模式的好處:

  1. 設計模式已經是前人經驗淬鍊出的方法,快速解決問題,讓你專注在實作上
  2. 了解設計模式,方便溝通並做Code Review

OOP物件導向

接下來都是討論物件導向語言的設計模式。(大部分的教學都是以JAVA為主)
但是探討過JS的物件之後,大致上的概念也都可以看懂,
也找到了網站以TS為基礎解釋設計模式。

就先來複習一下物件導向的基本特性吧,因為之後的設計模式都會以此為展開:

  1. 封裝(Encapsulation) 把事物封裝成抽象類別,可開放或隱藏自己的屬性或方法
  2. 繼承(Inheritance) 不用修改原本的物件,只要繼承就能使用,再擴充
  3. 多型(Polymorphism) 繼承來的東西表現形式都不同,也不用一樣。(如鴿子和雞都繼承了鳥類的飛,但鴿子飛高高)

物件導向設計原則

SOLID是物件導向設計原則五個原則開頭字的縮寫

  1. S 單一職責原則 Single responsibility principle (SRP)
    1. 物件保持一種功能,或只存在一種可能變更的原因
  2. O 開關原則 Open-Close principle (OCP)
    1. 對外開放可以擴展,不開放修改 (如:新功能寫新的程式碼擴展出來、不用修改現有程式碼。)
    2. 接下來談到的簡單工廠、抽象工廠都會應用到這個原則
  3. L 里氏替換原則 Liskov substitution principle (LSP)
    1. 子類可以替會掉父類
  4. I 介面隔離原則 Interface segregation principle (ISP)
    1. 將大的接口打散成小的獨立的接口
  5. D 依賴反轉原則 Dependency inversion principle (DIP)
    1. 設計和實現要依賴抽象而非具體

常見的三大分類

設計模式總共有23種,主要可以分成3種類型:

A. 創建型模式( Creational Patterns)
主要在於"創造對象",將創造與使用分開,並能增進程式碼靈活度,以及重複利用程式碼。

B.結構型模式(Structural Patterns)
將類和物件組成更大的結構,並同時保持彈性。

C.行為型模式(Behavioral Patterns) 用來識別對象間的交流模式,並分配職責。

這樣看這三大分類其實我也看不懂,明天開始每個分類都來探究1~2種,再回頭看看吧!



環遊非洲第21天-非洲可不可以有一個共同的語言?

非洲地廣、族群多、語言多,但各國都經歷過類似的歷史——殖民者入侵、家族流散...
非洲各國、以及流散在外人民開始掀起[泛非主義]運動(Pan-Africanism),希望促進非洲人民的團結。
那如果非洲是一個共同體,有沒有可能有一個共同語言?大家可以互相溝通、互相了解。

呼聲最高的非洲語言就是[史瓦希利語],在非洲以史瓦希利語當作第一或第二語言的人,
約有兩億人口。
史瓦希利語主要被廣泛使用在東非,是肯亞、莫三比克、倘桑尼亞官方語言。

其實我們對史瓦希利語一點都不陌生喔!因為獅子王的那句Hakuna matata
就是史瓦希利語呢!

https://ithelp.ithome.com.tw/upload/images/20221006/201402474eUBK0TRYK.jpg

The language of Pan-Africanism
Swahili's bid to become a language for all of Africa



參考

Java设计模式(十三) 别人再问你设计模式,叫他看这篇文章

看到 code 寫成這樣我也是醉了,不如試試重構

Design Patterns

如何理解这6种常见设计模式?

(鐵人) 幫自己搞懂物件導向和設計模式


上一篇
菜鳥Bash腳本大師-D20
下一篇
工廠模式-用TS挑戰設計模式-D22
系列文
分手前端菜雞之旅@非洲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言