有了前幾篇的基礎後,我們可以來談這次我的主題:「設計模式」。在實際進入到各個不同模式如何實踐前,我們再花些時間了解什麼是設計模式、為什麼我們要使用它? 設計模式...
本文同步更新於blog Iterator Pattern 提供一種方法順序訪問一個聚合對象中的各個元素, 而又不暴露其內部的表示。 迭代器模式會將類別分為...
觀察者模式 Observer Pattern 觀察者模式,一種現在全中國都知道你來了的模式,就有點像是收音機,打開收音機就開始自動接收廣播,關掉收音機就停止接...
今天我們開始介紹本書第一個提到的設計模式:Facade 模式。我會介紹什麼是 Facade 模式、它的一些關鍵特徵和它帶來的好處。Let's dive in!...
外觀模式 Facade Pattern 外觀模式,或者稱作門面模式,一種把複雜邏輯給包裝起來的一種模式,舉個例子來說,今天已經不單只是計算大頭菜了,而是你有個...
註冊模式 Registry Pattern 註冊模式,如果應用程式內有非常多同樣的物件需要高度重複讀寫,就會去建立一個儲存器來負責管理這些同樣的物件,就有點像...
上一篇,我介紹了 Facade 模式,今天我們繼續介紹另一個設計模式 —— Adapter 模式。 Adapter 模式想解決的問題 先給出一個情境 假設客戶給...
資料對應 Data Mapper 資料對應,這是一種常用於處理物件導向與資料庫資料的模式,與 Repository 不同,Data Mapper 主要處理的事...
本文同步更新於blog 情境:平台有三種身份,分別是訪客 (guest)、會員 (member)及付費會員(premium) 訪客藉由註冊 (regi...
橋接模式 Bridge Pattern 橋接模式,將實作體系與抽象體系分離開來,讓兩者能各自更動各自演進,就有點像是大頭菜有分健康的大頭菜及壞掉的大頭菜,你的...
策略模式 Strategy Pattern 策略模式,可以讓物件在運作時更改其行為或算法,你可以透過切換策略物件來改變計有的功能,你需要實作一個介面來代表這個...
模板方法 Template Method 模板方法,是一種如果這包水泥我有、你也有,就連喬瑟夫都有,那我們就應該把這八百包水泥抽離出來的設計模式,是設計模式中...
空物件模式 Null Object Pattern 空物件模式,一種以非 Null 的空白物件去取代 Null 的模式,其空白物件並不是拿來比對資料是否為 N...
本文同步更新於blog Command Pattern 將請求封裝成對象,以便使用不同的請求來進行參數化。 命令模式也支持隊列、日誌及可撤銷的操作。 命令...
本文同步更新於blog Observer Pattern 在對象之間定義一對多的依賴。 當一個對象改變狀態,依賴它的對象都會收到通知,並自動更新。 亦被稱作...
流暢介面 Fluent Interface 流暢介面,常用於撰寫如同文章般容易閱讀的程式碼,如果以大頭菜來講,那麼在建立大頭菜的同時,希望可以順便賦予其鈴錢價...
本文同步更新於blog 情境:這是一間牛排館,會根據客戶的訂單出菜 <?php namespace App\CommandPattern\Wes...
責任鏈模式 Chain of Responsibilities 責任鏈模式,有一系列的命令物件及處理物件,常見於需要被連續處理的地方上,舉例來說,假設今天收購...
今天我們將再次審視物件導向設計,並且帶入本書作者的新觀點。作者自己提到,接下來提到的看法可能並不會有太多的原創性,但是 稱之為新觀點,是指對於大多數開發人員而...
前情提要:Day1. 前言(動機與簡介) 動機 重新整理在blog中的相關內容。 與大家討論學習。 時間回到三個月前 那時剛開始用hexo玩部落格...
代理模式 Proxy Pattern 代理模式,它可以作為需要被保護的物件的介面,若以檔案權限來比喻的話,就是對主要物件套上一層代理,你可以在代理上實作控制權...
物件池模式 Pool Pattern 物件池模式,每次的買賣都是致富的關鍵,致富不能只靠 40 顆大頭菜,靠的是放滿整座島的大頭菜,因此你需要有個島專門放大頭...
原型模式 Prototype Pattern 原型模式,你有些物件可能會需要建立很多一樣的物件,只是某些資料不太一樣而已,就有點像是每顆大頭菜都是一模一樣的物...
命令模式 Command Pattern 命令模式,是一種將行為封裝起來裹上美好糖衣的一種模式,並將接收與執行分離出來,就有點像是把大頭菜買賣這件事,如果把買...
疊代器模式 Iterator Pattern 疊代器模式,提供一種方法來簡單控制一個集合物件,這段過程並不會暴露該物件的來源或修改它,就有點像是你的背包(Ba...
本文同步更新於blog 前情提要:鐵路運輸系統,參考範例:運輸系統(簡單工廠模式) <?php namespace App\FactoryPa...
本文同步更新於blog Adapter Pattern 將一個類的接口,轉換成客戶期望的另一個接口。 轉接頭讓原本接口不兼容的類可以合作無間。 轉接頭模式...
本文同步更新於blog 情境:讓我們用Line群組,來實作觀察者模式 首先實作抽象的觀察者類別 (Observer) 其中會有接收到主題類別通知時...
這篇繼續 DAY2 的例子,在上篇的結尾,我們對物件導向範型的解法提出了另一項需求:在聽課的人中,研究生中有擔任助教的人必須要先到行政處找行政人員辦理一些業務。...
本文同步更新於blog Facade Pattern 提供一個統一的接口,用來訪問子系統中的一群接口。 外觀模式定義了一個高層接口,讓子系統更容易使用。...