策略模式 策略模式也是一種好用的模式,可以封裝並獨立不同的演算法,符合SRP單一職責原則跟OCP開放關閉原則。透過composition的方式,將演算法放入物件...
工廠方法-Factory method 這應該是大家學design pattern第一個遇到的pattern吧,這個pattern有兩個角色 一個是 Fact...
樣板方法模式-Template method 最近在學design pattern,看到一個模式很熟悉,原來是曾經在一個爬蟲系統中見過使用這個架構。 應用 這...
眾所皆知,寫單元測試有非常多好處,但有些主管會問,為什麼寫測試會讓工程師額外花這麼多時間?除了因為缺乏單元測試技術知識外,根本原因是產品程式碼的可測試性太低,導...
Java 8 新加入了 Optional 類別,能省去繁瑣的 null check 流程,豐富的 API 也讓程式邏輯看起來更簡潔、易讀。但我卻看到了不少錯誤的...
DRY (Don't repeat yourself),是敏捷開發的核心設計原則之一。DRY 原則規定,對於每個知識點,系統中都只有一個明確而權威的表示。這個原...
YAGNI (You aren't gonna need it!),是敏捷開發的核心設計原則之一。此原則指出,程式開發者應該在面臨確鑿的需求時,才實作相應的功能...
在 Java 專案中,應該不少人看過或寫過只有一個實作(implementation)的介面 (interface),並且以 interface-impl 的風...
心得 雖然還沒把整本書的內容都整理完,但鐵人30已經告一段落~回顧一下這本書總共14章,而這30篇涵蓋了1~8、10章的內容,剩下代理模式、複合模式,以及後面的...
實際使用中的樣板方法 書中舉了 Java API 實際使用樣板方法的例子,其中一個是排序的sort()。sort()是一個靜態方法,而要使用這個排序方法,就要求...
筆者在最近幾個月陸續看了一些與設計模式、軟體重構有關的書籍: 設計重構 The Uber Go Style Guide Hey! Go Design P...
掛勾 在一個樣板方法中,它的結構大概會長這樣: class AbstractClass { void templateMethod() {...
來杯飲料吧 接下來我們回過頭看第八章─樣板模式。現在我們來看泡茶與泡咖啡的例子,它們有許多共通點:例如這是泡咖啡的程式: /*程式碼待補*/ 而這是泡茶的程式...
proxy decorator mix proxy and decorator summary 代理 Proxy 代理的觀念非常的生活化,像是日本代購、掏寶...
狀態模式優點 套用了狀態模式的糖果機程式,功能跟一開始的寫法相同,卻大幅增加了可維護性,因為它移除了那些複雜的if-else判斷,也可以維持封裝的特性─ 讓既有...
新設計 為了加入這個規則,會發現原本的方法全部都會被改到。那堆if-else都要重新加入新的狀態,可以看看違反了前面提到的哪些規則─ 沒有遵守開放/ 封閉原則,...
設計模式,重要嗎? 我擺在這麼後面的理由,就是因為他不是最重要的,甚至是說,寧願你把程式碼先寫好,也不用先去學設計模式 當你先去學設計模式,你可能會硬套進現有專...
結構型模式之組合模式 受到React Hook啟發,Vue推出了Composition API,從來沒想過[Composition]組合是什麼意思嗎? 今天就來...
糖果機設計 經過轉接器模式後,先快轉進入到第十章─ 狀態模式。本章的舉例是目前有一台糖果機,想要設計一套軟體讓糖果機變成由軟體控制,要求包含在"投入2...
行為型模式:觀察者模式 Observer Design Pattern 如果你用過Vue的Watcher,那你就大概了解了觀察者模式啦。觀察者模式指的是可以[訂...
創建型:抽象工廠模式 昨天看了工廠模式後,今天的抽象工廠就容易入手啦。 昨天我們用工廠模式製作了一個椅子工廠,假如今天我們今天要擴展我們的商業模式,發展系列家具...
物件轉接器與類別轉接器 類別轉接器的圖示則如下: 圖 1 所謂的類別轉接器需要用多重繼承來進行實作,可以看到圖中的差別,在於adapter在物件轉接器中,是...
創建型:工廠模式 工廠模式顧名就是創造東西,可能是物件、類別、甚至方法。 以下這些都是工廠模式: 用函式、方法來做程式的圖形介面 來創造用戶的類別 靜態方法呼...
物件導向轉接器 終於又進入新的篇章啦!這個轉接器與門面模式也是極度常見與好用(也頗好理解)的模式。首先轉接器,顧名思義,就是將介面轉換為另一個介面,以滿足用戶端...
復原按鈕 還記得命令模式的其中一個特色是支持 "可復原" 的操作嗎?這要怎麼實現呢?首先,我們在'Command介面中加入undo()函式,...
實作遙控器 昨天實作了簡單遙控器,今天將遙控器的展開至多個按鈕吧!首先遙控器部分,我們把所有的按鈕用兩個陣列儲存在遙控器中,並將setCommand時改成一次設...
建立command物件 首先,來製作我們的訂單介面─ 對照昨天的圖,就是Command,而它必須有orderUp這個方法讓服務生去呼叫,對應到命令模式就是exe...
遙控器的設計 這章的設計目標是由"遙控器的設計"切入。設想現在有一個好幾個按鈕的遙控器,有2排各n個按鈕,讓使用者設定不同列的按鈕要操控不同...
終於來到第30天,真的是太感動了,沒想到可以完成這一系列設計模式的介紹,最後我們就來回顧一下之前介紹各個模式時的一些要點以及總結。 物件導向原則的總結 在討論設...
終於來到第29天了!今天要介紹的也是這個系列中的最後一個模式,State 模式,我們就直接看範例吧,假設今天有個會員制度,當你存入銀行的錢有超過指定的標準,就會...