original article: https://xiang753017.gitbook.io/zixiang-blog/patterns/patterns-...
持續一個月的努力,終於來到了鐵人賽的最後一天。我大約在兩個月前萌生了參加鐵人賽的念頭,但當時其實猶豫了很久,一方面是擔心無法兼顧工作與寫作,另一方面也怕無法產出...
這是我第一次參與鐵人賽,很感動終於完成啦🥳! 系列文總結 文章回顧 先來回顧一下此次系列文包含的主題: [Day 01] 系列文動機與大綱 Desig...
訪問者模式允許在不修改物件類別的情況下,對物件集合中的元素施加新的操作。 生活範例 麥當勞的餐點有很多種點法,比如說一個麥香雞漢堡,可以單點、搭配薯條和可樂做成...
介紹 還是一樣,Kotlin 沒有中介者模式的語法糖,只有寫法上的差別 功能需求如下: 有三個角色,分別是商場、家樂福和全家 商場可以對家樂福和全家廣播促銷活...
解釋器模式可以透過簡單語言來執行常見任務。 生活範例 一份樂譜記載著一段旋律,譜上的音符代表著音高,休止符代表著暫停,音節的長短則由不同的符號來表示。樂譜上的符...
介紹 抱怨一下 當初為什麼要選這個設計模式當最後一組題目呢 從早上十二點寫到早上五點半是不用睡覺了嗎 模式從這三個組成 中介者介面:Mediator 抽象類別...
方法鏈可以透過一連串的方法呼叫來取得計算結果,而無需將中間結果存為變數。 生活範例 想像草莓果醬的生產線,上面包含幾個主要關卡:清洗、烹煮和裝瓶,經過一步步的處...
介紹 依然是那句話,Kotlin 在狀態模式也沒有語法糖可以用 狀態模式實作 建立會員等級介面 interface Level { fun stat...
介紹 讀完狀態模式後,發覺跟裝飾模式有一點類似 如果用稱號來說,裝飾模式可以加很多上去 但是狀態模式只有一個狀態,依照特定的值來改變 狀態模式實作 建立會員等...
備忘錄模式能讓物件在不破壞封裝的情況下儲存與回復狀態。 生活範例 備忘錄模式的一個經典應用場景是歷史紀錄。這類紀錄在我們的日常生活中隨處可見,例如 Word、P...
狀態模式使用狀態物件來表示物件在不同狀態下的行為,並通過改變狀態物件來改變行為。 生活範例 街道中的紅綠燈非常適合用來說明狀態模式的概念。紅綠燈有三種狀態:紅燈...
介紹 Kotlin 在樣版模式也也也也也沒有語法糖,所以寫法跟 Java 類似 樣版模式實作 建立抽象會員模版給家樂福和全家使用 先建立基本的「會員姓名」和「...
橋接模式通過將物件的抽象部分與實現部分分離,使系統更具彈性。 生活範例 隨著行動支付方式日益多樣化,想像一間行動支付整合商的服務,支援像 Apple Pay、L...
介紹 看完的理解是跟名稱一樣,可以先預先建立一個抽象樣版這樣建立物件後,就可以從樣版執行預設的程式碼 樣版模式實作 建立抽象會員模版給家樂福和全家使用 先建立...
享元模式透過重複使用物件來減少資料量並節省記憶體。 生活範例 圖書館有很多藏書,同一本書可能有多本館藏,以滿足讀者需求。假設每次購書都要將書本的基本資料輸入圖書...
介紹 Kotlin 沒有責任鏈模式的語法糖,所以寫起來就跟 Java 類似,但是 Koltin 的防空值設計,可以讓我們少寫一些空值判斷,還是很棒的 責任鏈模式...
介紹 讀完後我的理解是他讓兩個繼承的類別有上下級關係,可以做階層的應用 責任鏈模式實作 public class ApplyRequest { pri...
中介者模式透過獨立的物件來協調物件之間的互動行為,避免它們相互依賴。 生活範例 想像你在一間公司,各部門都透過專案管理組來進行溝通。每當某個部門有需求時,都會聯...
代理模式透過包裝物件來管理外部對物件的操作行為。 生活案例 每名偶像都有一位經紀人,負責管理其工作行程。廠商會透過經紀人洽談合作機會,並透過經紀人取得回覆。廠商...
介紹 Kotlin 的策略模式沒有語法糖,所以跟 Java 的差不多 策略模式實作 建立促銷介面 interface Promotion { fun...
空物件模式利用一個沒有實質行為的空物件來統一客戶端程式的操作行為。 生活範例 大家去日本旅遊時曾經注意過日本的販賣機嗎?日本的販賣機非常有趣,有些會用空的包裝來...
介紹 策略模式跟工廠模式很像 我自己的理解,兩者的差別是這樣: 策略模式:重視過程 工廠模式:重視結果 這次的範例是會員買商品,會有三種促銷情境 單件折扣...
合成模式藉由統一樹狀結構中所有節點的介面,使不同類型的節點擁有相同的操作介面。 生活範例 一間企業由不同部門組成,部門下有組別,而每個組別還可能有不同的團隊。企...
介紹 Kotlin 也有內建觀察模式,只要使用Delegates.observable就行,但是抽象類別沒有初始值的關係,所以不能直接用 觀察者模式實作 因為...
今天要介紹的是命名空間化模式🧐 什麼是命名空間 《JavaScript 設計模式學習手冊 第二版》作者 Addy Osmani 在書中敘述命名空間(names...
反覆器讓我們取得聚合中的所有元素而不必暴露內部的實作細節。 生活案例 假設你擁有很多電子書,但每本書的格式都不同,有些是 PDF,有些是 txt 檔,有些是網路...
介紹 Android 開發者肯定對觀察者模式不陌生,從早期的 EventBus 到後期的 RxJava,都是觀察者模式的應用 開發上要注意的是在生命週期開始的時...
樣板方法提供一個演算法模板,讓子類別在相同的步驟中實踐不同的實作細節。 生活範例 以料理為例,每道菜使用的食材、烹煮方式和擺盤風格各不相同,但都會經歷三個主要步...
今天要介紹的是 Promise 模式,在前端應用中,有很多需要進行非同步處理的場景,最常見的就是向後端發送 API 請求以取得資料,而這種發送請求的任務因為通...