iT邦幫忙

設計模式相關文章
共有 258 則文章
鐵人賽 自我挑戰組 DAY 22
設計模式探索 系列 第 22

技術 [Day 22] 轉接器與門面模式 (2)

物件轉接器與類別轉接器 類別轉接器的圖示則如下: 圖 1 所謂的類別轉接器需要用多重繼承來進行實作,可以看到圖中的差別,在於adapter在物件轉接器中,是...

鐵人賽 自我挑戰組 DAY 3

技術 [深入淺出設計模式] Ch1 Intro to Design Patterns (3) - 【策略模式 Strategy Pattern】 SimUDuck 鴨子模擬器 &範例補充

上一篇文章中大家應該有發現,在鴨子的類別中有包含兩個方法,分別是setQuackBehavior()和 setFlyBehavior(), abstract c...

鐵人賽 自我挑戰組 DAY 14
設計模式探索 系列 第 14

技術 [Day 14] 工廠模式 (4)

加入食材工廠 最後要進入抽象工廠模式前,先來設想一個情況─前面對於pizza的製作,是由各pizza factory各自create實例化出來,而現在希望連pi...

鐵人賽 自我挑戰組 DAY 10
設計模式探索 系列 第 10

技術 [Day 10] 裝飾器模式 (2)

裝飾器模式 在咖啡這個案例中,我們不希望由繼承這麼僵化的架構來實作,因此我們使用裝飾器模式。而在裝飾器模式中,我們先打造基底部分,其他配料都在"執行期...

鐵人賽 自我挑戰組 DAY 5
設計模式探索 系列 第 5

技術 [Day 5] 策略模式 (3)

集大成的UML 經過前幾天的內容,以上都了解後,應該也可以順利地組合出最終UML的樣子了:(參考原書以draw.io繪製)可以看到會變的部分被封裝了起來,其他行...

鐵人賽 自我挑戰組 DAY 9
設計模式探索 系列 第 9

技術 [Day 9] 裝飾器模式 (1)

前言 終於進入了第三章─ 裝飾器模式!首先可以稍微回顧一下第一章提到的其中一個原則─ 多用"組合",少用"繼承",這章會...

鐵人賽 自我挑戰組 DAY 4
設計模式探索 系列 第 4

技術 [Day 4] 策略模式 (2)

第二個原則 接續昨天的問題,我們要來看如何更彈性的設計出這個架構!那要怎麼應用呢?書本提到了第二個原則: 針對"介面"而非"實作...

鐵人賽 自我挑戰組 DAY 11
設計模式探索 系列 第 11

技術 [Day 11] 工廠模式 (1)

前言 今天前進到了第四章─ 工廠模式,這章篇幅較長,在實際運用中也非常常見,值得好好理解,不但可以運用在程式設計上,也常常在溝通時聽到這邊用simple fac...

鐵人賽 自我挑戰組 DAY 18
設計模式探索 系列 第 18

技術 [Day 18] 命令模式 (2)

建立command物件 首先,來製作我們的訂單介面─ 對照昨天的圖,就是Command,而它必須有orderUp這個方法讓服務生去呼叫,對應到命令模式就是exe...

技術 [深入淺出設計模式] Ch7 The Adapter Pattern (7) - 【迪米特法則】範例 超市結帳

沒想到從完賽後荒廢了這麼久XD想說再往下一章看之前 先複習一下前面的觀念順便實作上篇提到的迪米特法則看看⋯⋯假設今天要設計一個簡單的超市結帳系統會需要類別 It...

技術 [深入淺出設計模式] Ch8 The Template Method Pattern (2) - 模板模式 範例 動物排序

上篇解釋完模板模式手癢還是把書中另一個排序的範例寫了一下哈哈假設今天有不同的動物類別共同點是他們都有某種數值可以排序我們就可以繼續用模板模式啦~ 首先定義了一個...

鐵人賽 自我挑戰組 DAY 19
設計模式探索 系列 第 19

技術 [Day 19] 命令模式 (3)

實作遙控器 昨天實作了簡單遙控器,今天將遙控器的展開至多個按鈕吧!首先遙控器部分,我們把所有的按鈕用兩個陣列儲存在遙控器中,並將setCommand時改成一次設...

鐵人賽 自我挑戰組 DAY 24
設計模式探索 系列 第 24

技術 [Day 24] 狀態模式 (1)

糖果機設計 經過轉接器模式後,先快轉進入到第十章─ 狀態模式。本章的舉例是目前有一台糖果機,想要設計一套軟體讓糖果機變成由軟體控制,要求包含在"投入2...

鐵人賽 自我挑戰組 DAY 15
設計模式探索 系列 第 15

技術 [Day 15] 單例模式 (1)

獨一無二的物件 又來到了新的模式,這次登場的是 「單例模式」 ─當我們希望一個物件永遠只有一個實例時就會派上用場。這個模式非常簡單,可說是非常不燒腦,了解了就可...

鐵人賽 自我挑戰組 DAY 16
設計模式探索 系列 第 16

技術 [Day 16] 單例模式 (2)

以巧克力工廠為例 前面講了這麼多,還沒有實例登場。這次,書中提到的範例是巧克力工廠─ 工廠的運作依賴著對巧克力鍋爐狀態的偵測,依據不同的狀態執行不同的動作,避免...

鐵人賽 自我挑戰組 DAY 29
設計模式探索 系列 第 29

技術 [Day 29] 樣板方法模式 (3)

實際使用中的樣板方法 書中舉了 Java API 實際使用樣板方法的例子,其中一個是排序的sort()。sort()是一個靜態方法,而要使用這個排序方法,就要求...

鐵人賽 自我挑戰組 DAY 7
設計模式探索 系列 第 7

技術 [Day 7] 觀察者模式 (2)

觀察者模式的情境 所謂的觀察者模式,顧名思義,主要就是由兩個角色所組成:觀察者(observer)與被觀察者(subject);也可以用發布者與訂閱者來想像它們...

鐵人賽 自我挑戰組 DAY 12
設計模式探索 系列 第 12

技術 [Day 12] 工廠模式 (2)

工廠方法 現在我們想要將披薩的製作從pizzaFactory放回pizzaStore裡,但又想要保持統一框架與彈性,可以怎麼做呢?就是將create這個動作變成...

鐵人賽 Software Development DAY 16
軟體架構備忘錄 系列 第 16

技術 Day 16 程式架構 - 行為型設計模式 (知識點080~084)

想要解決的問題 如何將可能變動的邏輯抽出,讓該邏輯視需求動態抽換? 架構設計中,有許多邏輯都會可能會變動。需要事先辨認那些是可能變動的部分。並抽出這些變動的邏輯...

鐵人賽 自我挑戰組 DAY 26
設計模式探索 系列 第 26

技術 [Day 26] 狀態模式 (3)

狀態模式優點 套用了狀態模式的糖果機程式,功能跟一開始的寫法相同,卻大幅增加了可維護性,因為它移除了那些複雜的if-else判斷,也可以維持封裝的特性─ 讓既有...

鐵人賽 自我挑戰組 DAY 8
設計模式探索 系列 第 8

技術 [Day 8] 觀察者模式 (3)

第四個原則 前面介紹策略模式時,就提到過設計的程式希望是有彈性的,而 鬆耦合(lossely coupled) 就可以提升程式的彈性。所謂的鬆耦合,就是降低物件...

技術 [深入淺出設計模式] Ch9 The iterator and composite patterns (1) - 迭代器模式和組合模式

書中給了一個好懂的範例,假設我們所在的小鎮有兩間有名的餐廳,Pancake House 跟 Diner。突然有個機會要開一間快閃店,要提供以上兩餐廳的食物分別作...

鐵人賽 自我挑戰組 DAY 1

技術 [Day01] Design Pattern - 無所不在的設計模式

前言 在開始前先來介紹一下自己的背景~我目前為軟體實習生,因為還沒畢業,開始了我充實(?)的work-study life在onboard沒多久,我的ment...

鐵人賽 Software Development DAY 15
軟體架構備忘錄 系列 第 15

技術 Day 15 程式架構 - 結構型設計模式 (知識點076~079)

思考的問題 如何通過組合多的不同的類別與物件,完成複雜的需求? 當有複雜的需求時,有甚麼方法可以組合這些類別呢?常見的方式包含:外觀模式、轉接器模式、裝飾者模式...

鐵人賽 自我挑戰組 DAY 13
設計模式探索 系列 第 13

技術 [Day 13] 工廠模式 (3)

第六個原則 回顧一下一開始大爆炸的製作披薩寫法。如果不管怎樣的pizza,我們都在同一個pizza store裡面的orderpizza判斷各種pizza的口味...

鐵人賽 自我挑戰組 DAY 8

技術 [Day08] Design Pattern - Abstract Factory抽象工廠模式

前言 今天來說一個跟昨天的工廠方法模式有點像的...Abstract Factory~抽象工廠模式!! 看這篇前建議先去看前一天的工廠方法模式歐~~點我去Day...

鐵人賽 自我挑戰組 DAY 20

技術 [深入淺出設計模式] Ch6 The Command Pattern (1) - 【命令模式】概念講解

命令模式 The Command Pattern 主要概念是將請求或操作封裝成對象,以便在不同的情境下執行這些請求,同時使得我們能夠解耦發出請求的對象和實際執行...

鐵人賽 自我挑戰組 DAY 7

技術 [Day07] Design Pattern - Factory Method工廠方法模式

前言 今天去拔智齒🥲咬紗布咬了好久還要歪著頭吃粥XD雖然臉頰在發熱但是鐵人還是要繼續!! 今天要講工廠模式了~前三天好像花了有點多時間在實作MVC上,懊惱過...

鐵人賽 自我挑戰組 DAY 16

技術 [Day16] Design Pattern - Facade 外觀模式

定義 Facade is a structural design pattern that provides a simplified interface...

鐵人賽 自我挑戰組 DAY 18

技術 [Day18] Design Pattern - Proxy代理模式

前言 今天上班的時候師父剛好教我設定公司電腦的proxy😶‍🌫️結果很巧的今天就輪到要來寫這篇! 定義 Proxy is a structural d...