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