在閱讀經典書籍《設計模式 Design Patterns》中,如果你跳過第 1 章引言,那你可能就錯過了設計模式的核心概念了!作者在引言中花了大篇幅講解 介面...
小心設計模式別亂用 介紹 設計模式就是過去的人,根據常見的軟體設計的問題,提出的解決方案。設計模式總共有23種,根據情境分成三大類型,建立型、結構型、行為型。...
今天的主題是** Bridge Pattern 橋樑模式**,它的目的是當隨著開發的 feature 增加,類別的數量也跟著急遽增加的時候,解決類別數量過多的問...
本文同步更新於blog 情境:這是公司生產的文字積木 <?php namespace App\Flyweight\Blocks; class...
本文同步更新於blog Single Responsibility Principle (SRP) A module should have one, an...
本文同步更新於blog Interface Segregation Principle (ISP) No client should be forced t...
本文同步更新於blog Simple Factory Pattern 又稱為靜態工廠,傳入不同的參數以取得不同的類別物件。 簡單工廠模式會將類別分為兩類:...
本文同步更新於blog Open-Close Principle (OCP) A software artifact should be open for...
本文同步更新於blog 情境:讓我們利用備忘錄模式,實作一個仿真Git 首先定義Commit <?php namespace App\Me...
本文同步更新於blog Builder Pattern 將複雜對象的構建與其表示分離。 建造者模式會將類別分為三類:分別是指揮者類別 (Director)...
本文同步更新於blog 情境:三隻小豬想要蓋房子 首先是牆壁,可以選擇不同的建材 <?php namespace App\Prototype...
本文同步更新於blog 情境:玉皇大帝要舉辦渡河比賽,動物選手各顯神通。 <?php namespace App\BridgePattern\...
本文同步更新於blog Memento Pattern 透過對象外的存檔,讓對象能夠載入之前的狀態。 備忘錄模式會將類別分成三類:分別是原始類別 (Ori...
C#的書上(蠻多)對static描寫得很艱澀難懂,我翻了幾本也是對static一知半解,真是佩服會說出只讀一本書就能自學學好C#的人Orz 設計模式這個詞主要是...
簡單工廠 Simple Factory 簡單工廠,這是一種我們真的要買大頭菜的模式,你需要建立一個工廠,這個工廠負責生產特定物件,你只需要把材料丟給工廠,工廠...
本文同步更新於blog Bridge Pattern 將抽象部分與實現部分分離,使它們都可以獨立地變化。 橋接模式會將類別分為兩類:分別是抽象類別 (Ab...
本文同步更新於blog Prototype Pattern 當創建實例的過程很昂貴或複雜時,透過拷貝這些原型來建立新的實例。 原型模式中會將類別分為兩類:...
一份雞排,要切不要辣。 想像一個熟悉的情況,當我們晚上買宵夜時,先走到鹹酥雞攤,跟老闆說一份雞排,要切不要辣,此時你下了第一個命令。接著走到飲料攤,跟...
本文同步更新於blog Liskov Substitution Principle (LSP) Subtypes must be substitutable...
本文同步更新於blog 情境:運輸系統,用來取得當前機型名稱等資訊 <?php namespace App\FactoryPattern\Tr...
[Design Pattern] Abstract Factory 抽象工廠模式 桌子。 說起桌子,你會想到什麼呢?是 IKEA 的現代家具、維多利亞式的古典象...
(引用自 https://www.flickr.com/photos/strollers/12465549/) 想必沒吃過也聽過看過迴轉壽司吧,壽司師傅站在工...
修飾模式 Decorator Pattern 修飾模式,或者稱裝飾者模式,為物件動態增加新的方法,就想像你最初的大頭菜沒有想過他會壞掉,某天突然覺得讓大頭菜壞...
抽象工廠 Abstract Factory 抽象工廠,跟靜態工廠有點像,只是它沒那麼靜態,你需要先把工廠建立出來,才能開始生產大頭菜,就有點像是星期日的早上時...
本文同步更新於blog Flyweight Pattern 又稱為享元模式,於相似物件中共享儘可能多的資訊, 進而減少記憶體使用量。 蠅量模式會將類別分為...
本文同步更新於blog 情境:以下是某搜尋功能 客戶端程式碼 <?php namespace App\ProxyPattern\Cache;...
本文同步更新於blog Dependency Inversion Principle (DIP) High-level modules should not...
我們終將得到想要的東西,只是透過不同的方式來取得。 生活實例 當我們肚子餓的時候,可以自己走到巷口買食物,可以請家人順便帶食物回來,也可以使用美食外送的服務...
本文同步更新於blog 情境:讓我們試著作一個摩斯電碼機,它會將一般句子轉成摩斯電碼的表示 首先是語境類別 (Context) <?php...
本文同步更新於blog Proxy Pattern 為另一個對象提供一個替身或佔位符以控制這個對象的訪問。 代理模式將類別分為兩類:分別是實體類別 (Re...