本文同步更新於blog Bridge Pattern 將抽象部分與實現部分分離,使它們都可以獨立地變化。 橋接模式會將類別分為兩類:分別是抽象類別 (Ab...
本文同步更新於blog Liskov Substitution Principle (LSP) Subtypes must be substitutable...
[Design Pattern] Abstract Factory 抽象工廠模式 桌子。 說起桌子,你會想到什麼呢?是 IKEA 的現代家具、維多利亞式的古典象...
本文同步更新於blog 情境:運輸系統,用來取得當前機型名稱等資訊 <?php namespace App\FactoryPattern\Tr...
抽象工廠 Abstract Factory 抽象工廠,跟靜態工廠有點像,只是它沒那麼靜態,你需要先把工廠建立出來,才能開始生產大頭菜,就有點像是星期日的早上時...
本文同步更新於blog Mediator Pattern 集中相關對象的之間複雜的溝通與控制方式。 中介者模式會將類別分為兩類:分別是中介者類別 (Med...
我們終將得到想要的東西,只是透過不同的方式來取得。 生活實例 當我們肚子餓的時候,可以自己走到巷口買食物,可以請家人順便帶食物回來,也可以使用美食外送的服務...
本文同步更新於blog Dependency Inversion Principle (DIP) High-level modules should not...
在介紹設計模式前,我們要先花點時間來介紹一下兩種程式設計:功能分解 (functional decomposition) 與 物件導向範型 (object-or...
本文同步更新於blog Singleton Pattern 確保一個類只有一個實例,並提供一個全局訪問點。 單例模式只會將類別分為一類,即單例類別 (Si...
註冊模式 Registry Pattern 註冊模式,如果應用程式內有非常多同樣的物件需要高度重複讀寫,就會去建立一個儲存器來負責管理這些同樣的物件,就有點像...
嗨,我是Bear。 遵守在Day30時與自己的約定,於年前寫完所有設計模式。稍晚會將目錄更新至Day1。 以下這段話給2019年的自己 讀書會還好玩吧?...
本文同步更新於blog State Pattern 允許對象在內部狀態改變時,改變它的行為,對象看起來好像修改了它的類。 狀態模式會將類別分為兩類:分別是...
本文同步更新於blog 需求一:KTV系統要按照新增到系統的時間,由舊到新,實作歌曲排行 定義系統存取歌曲的類別(解析傳進來的data) <?...
本文同步更新於blog 需求一:客戶想要能與資料庫連線的類別 <?php namespace App\SingletonPattern\DBC...
本篇接著談論 Chapter 8 的後半部分,我將談到兩個主題: 共通性與可變性分析 敏捷開發與設計模式 今天的內容會比較輕鬆,偏概念性。Here we g...
本文同步更新於blog Composite Pattern 允許將對象組合成樹形結構來表現整體/部分層次結構。 組合能讓客戶以一致的方式處理個別對象以及對象...
本文同步更新於blog 情境:原本的生物分類學(界門綱目科屬種) <?php namespace App\CompositePattern\T...
在簡單介紹完物件導向之後,我們在簡單地介紹類別間的關係。這對往後程式架構設計以及理解即將提到的設計模式有很大的幫助。 UML 圖 What the heck i...
轉接器模式 Adapter Pattern 轉接器模式,顧名思義會在兩個同功能但不同的規格的東西中,當作中間溝通的橋樑,就有點像是健康的大頭菜因為放超過一個禮...
本文同步更新於blog 情境:公司開發了一個新產品,客戶端有許多不同的請求 客戶端的請求類別 <?php namespace App\Ch...
觀察者模式 Observer Pattern 觀察者模式,一種現在全中國都知道你來了的模式,就有點像是收音機,打開收音機就開始自動接收廣播,關掉收音機就停止接...
本文同步更新於blog Interpreter Pattern 給定一個語言,定義它的語法表示與文法。 利用不同的表達式來翻譯語言中的句子。 解譯器模式會...
建造者模式 Builder Pattern 建造者模式,主要用來建立複雜的物件,就有點像是大頭菜的功能組成,從鈴錢價格、組合數量、現場實價 ... 等等,為了...
本文同步更新於blog 情境:以下是人腦的運作程式 <?php namespace App\MediatorPattern\SayHello;...
本文同步更新於blog 情境:這是一間國際婚禮公司 <?php namespace App\VisitorPattern\Wedding;...
本文同步更新於blog Decorator Pattern 動態地將責任附加到對象上。 若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。 裝飾者模式會...
本文同步更新於blog 需求一:客戶想要一台收銀機 <?php namespace App\StrategyPattern\CashRegist...
有了前幾篇的基礎後,我們可以來談這次我的主題:「設計模式」。在實際進入到各個不同模式如何實踐前,我們再花些時間了解什麼是設計模式、為什麼我們要使用它? 設計模式...
工廠方法 Factory Method 工廠方法,跟抽象工廠有點像,可是又沒那麼像,抽象工廠的工廠會有個抽象類別,並且把工廠要做且會重工的事情寫在抽象類別當中...