2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Iterator Pattern? 將不同...
今天要認識的Design Pattern我覺得比較難,但我會盡量以簡單的方法讓大家了解 Visitor Pattern是如何運作的,現在就來學習一下吧!...
在 Structural patterns 當中,最後要來談的是外觀模式。 外觀模式提供我們一個簡單方便的操作介面,其背後幫我們實現了複雜的操作。這樣的模式其實...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Command Pattern? 將建立指...
今天要學習的模式我覺得很有趣,學完以後很常拿它用來做 undo、redo 的功能,因為它的功能就是用來保存和恢復物件的狀態的,現在就來認識一下吧! 問題情...
今天要談到代理模式,其實跟昨天的裝飾器模式很類似。代理模式的目的在於,因應某些條件替換物件原本的行為。 同樣用昨天的例子,這裡有 BookPrinter 可以把...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Chain of Responsibilit...
今天要認識的迭代器模式我個人覺得需要多花一點心思,才能夠了解它並善用它,程式當中也算是經常使用的設計模式,現在就一起來認識它吧! 問題情境與解析 假設...
今天要介紹的裝飾器模式,跟之前提到過的轉接器模式有點類似(但其實結果完全不一樣)。 轉接器模式的功能在於將讓現有的物件可以透過轉接器,能夠實現自己沒有的介面或功...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Proxy Pattern? 讓代理物件操...
今天要認識的模式是Chain of Responsibility,屬於Behavioral Design Pattern,它的名字很長,我覺得很好認,而且也...
今天要來介紹一個比較特別、平常可能不太常見的模式。就讓我們直接進入問題吧 問題 假設有間百貨公司週年慶,為了回饋會員,決定發送福袋給大家。在福袋當中,會放入價值...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Flyweight Pattern? 將可...
今天要學習的是Command Pattern,我個人覺得它的實用性蠻高的,也覺得它很好理解,如果有實作過一堆按鈕的表單,就會覺得它非常好用。 問題情境與解...
今天的橋接器模式,和昨天的轉接器模式一樣,都是非常常見的模式,可能我們不自覺當中都會使用到。話不多說,我們就先來看例子吧! 這裡有一個 Shape 類別,定義了...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Composite Pattern? 將單...
今天開始要介紹 Structural patterns。先前的 Creational patterns 著重在如何根據不同的問題建立一個新的物件,而 Struc...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Facade Pattern? 實作不依賴...
今天要介紹的模式Mediator,與上一篇Facade的結構有點雷同,不過Mediator是屬於行為型模式,作用不太一樣,現在就來了解Mediator在做甚...
今天要介紹的模式是屬於結構型模式的一種,我個人覺得他還蠻簡單的,有點像是程式碼中的主要窗口,現在就來看看它會做哪些事吧! 問題情境與解析 Facade...
今天來介紹 Creational Patterns 當中的最後一個模式。 假設這裡有一個 Engineer 類別,他除了有個 name 屬性之外,還擁有 too...
在功能穩定後,你對程式碼還有要求嗎? 「沒有最好的程式,只有更好的程式。」在完成功能後 Code Review 是非常重要的事情;不只看自己的程式碼,也要多...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Decorator Pattern? 不以...
今天要介紹的模式是屬於結構型模式的一種,此模式的名稱我想大多數的人都聽過或是知道它是做甚麼用的,而它所做的事情就像它的名子一樣,那就是Proxy! 問題情...
如果今天我們想要開一間飲料店,飲料的組合包含了茶、糖,還有牛奶,於是我們可以建立一個 createTea 方法,並依據傳入的參數,來決定最後的產品 class...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ 什麼是 Bridge Pattern? 將抽像與實...
一講到Flyweight,它最主要工作就是要減少記憶體的使用量,至於要怎麼做來能達到這樣的效果呢?現在就讓我們藝起來了解吧! 問題情境與解析 大家在使...
延續上一篇文章的例子,我們除了想要訓練出 baseball player 之外,也希望他能夠同時擁有一些裝備,像是合適的棒球衣以及棒球鞋。 所以這裡我們在 Ba...
2023/04/05 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~ Creational 建立相關的 patterns...
今天要來聊聊 Creational Patten 當中的工廠模式。 當我們透過類別建立出實例的時候,其實感覺就像是一個工廠生產出了產品。而同一個工廠 (類別),...