iT邦幫忙

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

技術 [Day 17] 命令模式 (1)

遙控器的設計 這章的設計目標是由"遙控器的設計"切入。設想現在有一個好幾個按鈕的遙控器,有2排各n個按鈕,讓使用者設定不同列的按鈕要操控不同...

鐵人賽 Software Development DAY 21

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

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

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

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

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

鐵人賽 Software Development DAY 20

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

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

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

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

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

鐵人賽 Software Development DAY 19

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

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

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

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

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

鐵人賽 Software Development DAY 18

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

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

鐵人賽 DevOps DAY 18

技術 UPF 原始程式碼解說

本文目標: 介紹 UPF 如何處理 UL/DL packets 追蹤 UPF 專案的原始程式碼(本篇注重在 control plane 上) Recap:什...

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

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

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

鐵人賽 Software Development DAY 17

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

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

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

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

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

鐵人賽 Software Development DAY 16

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

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

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

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

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

鐵人賽 自我挑戰組 DAY 11

技術 【從工程師升級成為資深工程師的那檔事Day 11】設計模式 - 生成器模式

一開始在做開發的時候,可能會因為專案小,或是時間上的因素使用工廠模式(或是不使用任何的設計模式)來撰寫程式。但常常會發現經過開發週期不斷的迭代(或是用戶需求的改...

鐵人賽 Software Development DAY 15

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

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

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

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

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

鐵人賽 Software Development DAY 14

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

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

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

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

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

鐵人賽 Software Development DAY 13

技術 【DAY13】淺談設計模式的原則與策略

今天我們要來談談設計模式的原則與策略,理解設計模式本質機制和它們背後的原則概念。當累積這些知識後,即使在未來寫程式時,還沒有發現設計模式的情況下,也能夠知道該怎...

鐵人賽 自我挑戰組 DAY 8

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

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

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

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

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

鐵人賽 Software Development DAY 12

技術 【DAY12】Abstract Factory模式 - 升級工廠2.0

昨天我們談到了 Factory模式,工廠可以生產實作同個介面 IShape的各種形狀。假設今天再多一個條件是「顏色」,而店家會去販售特定形狀的卡片搭配特定顏色的...

鐵人賽 Software Development DAY 23
玩轉C# 進階學習之旅 系列 第 23

技術 玩轉C#之【設計模式-Design Pattern】

小心設計模式別亂用 介紹 設計模式就是過去的人,根據常見的軟體設計的問題,提出的解決方案。設計模式總共有23種,根據情境分成三大類型,建立型、結構型、行為型。...

鐵人賽 Software Development DAY 11

技術 【DAY11】Factory模式 - 來當工廠老闆吧!

今天介紹的是工廠模式,因為會跟明天的 Abstract Factory 有點關係,所以先來說一下,這個工廠模式,相對我們前幾天談到的其他模式都還要單純很多,也很...

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

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

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

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

技術 [Day 6] 觀察者模式 (1)

RECAP 有了各種設計模式的定義,就可以用短短的名詞來代表背後的概念,幫助我們在設計程式時有效溝通,準確傳達想法;經由學習這些經過時間考驗與綜合眾工程師智慧的...

鐵人賽 Software Development DAY 10

技術 【DAY10】Bridge模式 - 矛盾的解釋

讓我們沿用上一篇轉接頭的例子,在之前我們都一直是以「螢幕」作為一端去跟電腦做連線,假設現在我們把範圍擴大,將螢幕做分類,可能有不同規格類型的螢幕會需要跟電腦做連...

鐵人賽 Software Development DAY 9

技術 【DAY9】Strategy模式 - 強化我的轉接器

我們在昨天有留下一個問題,假設今天變成是 AVG的外接口想要去轉成 HDMI,那是不是就要再多一個 AvgToHdmiAdapter 的類別出來並且一樣去繼承...

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

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

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