Strategy Pattern 是 OOP 中最著名的 Design Pattern,幾乎可以說是 OOP 中 『解耦合』最經典的應用,F# 既然是 Function First Language,就讓我們以 function 的角度重新思考什麼是 『解耦合』。
點燈坊
念念不忘,必有迴響。有一口氣,點一盞燈,有燈就有人。
Strategy Pattern 是 OOP 中最著名的 Design Pattern,幾乎可以說是 OOP 中使用 interface
最經典的應用,隨著 FP 逐漸受到重視,Strategy Pattern 在實作上也有了新的面貌。
泛型
是物件導向 多型
的延伸技術,多型是以 interface 為基礎,在 執行時期
決定適當型別;而泛型則是以 type parameter 為基礎,在 編譯時期
決定適當型別。
泛型也是 TypeScript 的一大特色,預計 ECMAScript 將來也不會採用泛型。
將實質上不同的型別,在邏輯上看成相同的型別。如 function 可能回傳 int
或 bool
兩種型別,可為此 function 特別建立 IntOrBool
型別,同時包含 int
與 bool
,這就是 Discriminated Union,簡稱 union
。
若說 tuple
是將不同型別加以 AND,則 union
是將不同型別加以 OR。