今天要認識的模式是Chain of Responsibility,屬於Behavioral Design Pattern,它的名字很長,我覺得很好認,而且也...
今天要來介紹一個比較特別、平常可能不太常見的模式。就讓我們直接進入問題吧 問題 假設有間百貨公司週年慶,為了回饋會員,決定發送福袋給大家。在福袋當中,會放入價值...
今天要學習的是Command Pattern,我個人覺得它的實用性蠻高的,也覺得它很好理解,如果有實作過一堆按鈕的表單,就會覺得它非常好用。 問題情境與解...
今天的橋接器模式,和昨天的轉接器模式一樣,都是非常常見的模式,可能我們不自覺當中都會使用到。話不多說,我們就先來看例子吧! 這裡有一個 Shape 類別,定義了...
今天要介紹的模式Mediator,與上一篇Facade的結構有點雷同,不過Mediator是屬於行為型模式,作用不太一樣,現在就來了解Mediator在做甚...
今天開始要介紹 Structural patterns。先前的 Creational patterns 著重在如何根據不同的問題建立一個新的物件,而 Struc...
今天要介紹的模式是屬於結構型模式的一種,我個人覺得他還蠻簡單的,有點像是程式碼中的主要窗口,現在就來看看它會做哪些事吧! 問題情境與解析 Facade...
今天來介紹 Creational Patterns 當中的最後一個模式。 假設這裡有一個 Engineer 類別,他除了有個 name 屬性之外,還擁有 too...
今天要介紹的模式是屬於結構型模式的一種,此模式的名稱我想大多數的人都聽過或是知道它是做甚麼用的,而它所做的事情就像它的名子一樣,那就是Proxy! 問題情...
如果今天我們想要開一間飲料店,飲料的組合包含了茶、糖,還有牛奶,於是我們可以建立一個 createTea 方法,並依據傳入的參數,來決定最後的產品 class...
一講到Flyweight,它最主要工作就是要減少記憶體的使用量,至於要怎麼做來能達到這樣的效果呢?現在就讓我們藝起來了解吧! 問題情境與解析 大家在使...
延續上一篇文章的例子,我們除了想要訓練出 baseball player 之外,也希望他能夠同時擁有一些裝備,像是合適的棒球衣以及棒球鞋。 所以這裡我們在 Ba...
今天要來聊聊 Creational Patten 當中的工廠模式。 當我們透過類別建立出實例的時候,其實感覺就像是一個工廠生產出了產品。而同一個工廠 (類別),...
今天介紹的Adapter Pattern是屬於結構型模式,以字面上來說不難猜到它是用來讓物件與物件之間能夠協同合作,至於它是怎麼運作的,現在就一起來認識吧!...
今天介紹的State Pattern與昨天的Strategy Pattern非常的相似,不過它們之間到底有沒有甚麼差別呢?現在就帶你一起來了解! 問題情境...
首先,先來看看一個簡單、特殊的創造物件的模式。 In software engineering, the singleton pattern is a sof...
Strategy是屬於Behavioral Patterns的其中一種,我個人覺得這個模式非常好用,今天就帶給大家認識認識! 問題情境與解析 假設有個...
在前面的五篇文章當中,我們提到了 SOLID 設計原則,分別為 單一功能原則 Single Responsibility Principle 開放封閉原則 O...
今天要介紹的Bridge Pattern,當初在學習的時候就覺得這個 Pattern 很有意思,實用性感覺非常高,現在就帶你來認識它吧! 問題情境與解析...
最後,我們來到了 SOLID 當中的介面隔離原則。這裡我們先舉先前提到過的 BaseballPlayer and TennisPlayer 的例子。 由於兩個類...
書同文,車同軌,聽說召喚惡魔時,需要與惡魔簽訂契約,契約內容雙方都得遵守,C#也擁有跟類別簽訂契約的功能 介面(Interface) 在介面命名中大家習慣以I...
今天要介紹的Decorator Pattern,跟昨天的Composite Pattern都是屬於Structural Pattern,你可能會發現它們的C...
今天來談談 SOLID 當中的里氏替換原則,同樣的先來看一下例子。 延續先前的例子,公司持續拓展,滿足更多不同使用者的需求。現在公司決定,讓使用者可以在建立實例...
在人類中,基因肯定是世世代代在傳承,下一代除了接收了上一代的基因之外,可能還會偷偷的進化,C#中也是如此,我們就來一探究竟C#演化的奧妙吧 繼承概述 繼承的概...
今天要來介紹Composite Pattern,是屬於Structural Design Pattern的其中之一,現在就來認識一下吧! 問題情境與解析...
在上一篇文章當中我們談到開放封閉原則,這裡我們要來談談依賴反轉原則 Dependency inversion principle。先不談定義,先來看範例。 延續...
前幾天介紹的都是屬於Creational Patter,今天要來介紹最後一個位,也就是Prototype! 問題情境與解析 假設今天有個複雜的物件,你...
在上一篇文章當中,我們提到「單一功能原則」,指每一個類別只會因為一種原因被修改。那麼,如果真的遇到需求變動、需要修改的時候,我們該如何「修改」呢? SOLID...
一看到Builder就知道它是屬於Creational Pattern,那它可以用來解決什麼問題呢?現在就來認識一下Builder這個模式吧! 問題情境與...
關於物件導向程式設計的五個設計原則,大家可能會依據不同的順序來解釋,不過我想「單一功能原則」一定會被擺在首位。 這個原則由 "Uncle Bob&qu...