iT邦幫忙

設計模式相關文章
共有 259 則文章
鐵人賽 Software Development DAY 26

技術 【DAY26】Mediator模式 - 瞭解通訊軟體如何去發送訊息

大家在日常生活中應該常常用「Line」去聯絡吧!今天要介紹的 Mediator 模式就是 Line 應用的模板,當我們在互相聊天時,發送出去的訊息都會透過 Li...

鐵人賽 Software Development DAY 25

技術 【DAY25】Memento模式 - 無限生命值的秘訣!

今天要介紹的模式是 Memento ,簡單來說就是備忘錄的概念,也可以想像成用來記錄之前狀態的一個模式,透過 Memento 模式可以將狀態做儲存,如果未來有需...

鐵人賽 Software Development DAY 24

技術 【DAY24】Proxy模式 - 找個代理人來幫忙你吧!

Proxy 字面上是「代理」的意思,意味著當我們要做去做一些事情前,會先透過代理的這一層,之後才交給真正的物件做處理。我們在現實生活中,就有蠻多會遇到 Prox...

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

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

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

鐵人賽 Software Development DAY 17

技術 Day 17:Observer模式(一)

GoF對於Observer的定義為「在物件之間定一個一對多的的連結方法,當一個物件變換狀態時,其它關連的物件都會自動收到通知」 你也可以這樣說—Observ...

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

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

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

鐵人賽 Software Development DAY 16

技術 Day 16:Factory模式(二)

在這款遊戲中,我們共有兩個敵方單位、一個障礙物單位、兩個玩家單位,在這個範例中,我想用Factory模式來實作生成單位在地圖上的功能。 如果今天要實作一個隨機生...

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

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

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

鐵人賽 Software Development DAY 15

技術 Day 15:Factory模式(一)

GoF對工廠方法模式 (Factory Method) 的解釋是:「定義一個可以產生物件的介面,但是子類別決定要產生哪一個類別的物件。工廠方法讓類別的實例化程序...

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

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

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

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

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

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

鐵人賽 Software Development DAY 23

技術 【DAY23】Flyweight模式 - 共享的意義

Flyweight模式又稱享元模式,顧名思義就是共享元件,它使用物件用來儘可能減少記憶體使用量,於相似物件中分享儘可能多的資訊。我們第19天的Object Po...

鐵人賽 Software Development DAY 22

技術 【DAY22】Composite模式 - 從種子到大樹的過程

今天我們長話短說,Composite模式主要是希望可以透過同樣的型式對每個物件做操作,並且在操控的物件中是有保持著一種層級關係。以今天的例子來說,我想要只透過一...

鐵人賽 Software Development DAY 21

技術 【DAY21】Prototype模式 - 無限複製的秘訣!

今天要來介紹Prototype模式,簡單來說就是「複製」,在第19天時我們有提到說建立物件池去保存昂貴物件,那麼當我現在已經財富自由了,不用去管制購買機器的數量...

鐵人賽 Software Development DAY 20

技術 【DAY20】Builder模式 - 今晚...我想來點麥當勞(下)

我們在 DAY6 有用麥當勞的例子來介紹 Facade模式,今天我們再用麥當勞來舉例。假設今天到了麥當勞櫃台,我們不點套餐了,就是單點(雖然比較貴XD),而店員...

鐵人賽 Software Development DAY 19

技術 【DAY19】Object Pool模式 - 管理你的昂貴物件池

今天要介紹的是 Object Pool模式,會以工廠的機器為例。假設今天要生產晶片,需要高精密的機器才能去生產,而這台機器又非常昂貴,而且做出機器需要花的時間很...

鐵人賽 Software Development DAY 18

技術 【DAY18】Observer模式 - 訂閱你喜好的Youtuber!

各位應該都有在 Youtube 看過影片的經驗吧!如果想要看到影片,可以直接在 Youtube 上面搜尋關鍵字,或者在各別 Youtuber 的頻道中看到他們的...

鐵人賽 Software Development DAY 14

技術 Day 14:Mediator模式

仲介者模式(Mediator)在GoF中的說明是:「定義一個介面用來包裝一群物件的互動行為。仲介者藉由移除物件間的引用,來減少它們之間的耦合度,並且能讓你改變...

鐵人賽 Software Development DAY 13

技術 Day 13:Facade模式

外觀模式(Facade)在GoF 的解釋是:「替子系統定義一組統一的介面,這個高階的介面會讓子系統更容易被使用。」 使用Facade的最大優點,就是將系統內部的...

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

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

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

鐵人賽 Software Development DAY 12

技術 Day 12:State模式(二)

接續昨天的文章,在這次的範例中,是希望更改CALGUIController裡顯示回合階段的判斷條件,在重構前我是這樣去做回合階段的顯示CALGUIControl...

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

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

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

鐵人賽 Software Development DAY 11

技術 Day 11:State模式(一)

狀態模式(State),在GoF 中的解釋是:「讓一個物件的行為隨著內部狀態的改變而變化,而該物件也像是換了類別一樣。」 以流離之歌這款遊戲來說,在操作上就有以...

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

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

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

鐵人賽 自我挑戰組 DAY 8

技術 【從工程師升級成為資深工程師的那檔事Day 8】淺談設計模式

前面的篇章中分享了SOLID五大原則,我們可以在分析、設計時不斷的反思是否有遵循這些原則,不至於到了最後才發現,我們做出一個結構松散的架構。也分享了一些OOA、...

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

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

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

鐵人賽 Software Development DAY 17

技術 【DAY17】Double-Checked Locking模式 - 多執行序環境

昨天提到,可以用Singleton模式,讓實體永遠只會建立一次。但如果現在是在多執行序的環境下,會發生什麼事呢? 第一個執行緒檢查實體是否存在。因為實體不存在...

鐵人賽 Software Development DAY 16

技術 【DAY16】Singleton模式 - 那些年,我們一起搖的飲料(番外篇)

再延續昨天的例子,今天的我終於下定決心要減肥了,我規定我一天只能喝一杯奶茶,所以如果去買奶茶的話,店員只會給我一杯,如果再要第二杯,店員只會把剛剛做好的第一杯再...

鐵人賽 Software Development DAY 15

技術 【DAY15】Template模式 - 那些年,我們一起搖的飲料(下)

延續昨天的例子,我們在製作飲料的過程中,其實整體步驟都是蠻相像的,不外乎就是先煮沸水,加入茶葉煮成茶,加入冰塊以及配料,最後封膜打包給客人,這一系列的流程很類似...

鐵人賽 Software Development DAY 14

技術 【DAY14】Decorator模式 - 那些年,我們一起搖的飲料(上)

之前大學時期曾經短暫的在飲料店打過工,想說體驗一下不同的工作,那時候也是我體重的巔峰,因為每天都可以喝飲料,只要在店裡,基本上所有的飲料都可以喝,而且想要加什麼...