iT邦幫忙

設計模式相關文章
共有 258 則文章
鐵人賽 自我挑戰組 DAY 2

技術 [Day02] Design Pattern - 設計模式的各個種類

設計模式的種類 今天來介紹設計模式有哪些以及分類! 目前設計模式有23種,根據他們的使用目的、複雜度、架構可以區分為三類(來自GoF的分類): Creati...

鐵人賽 自我挑戰組 DAY 1

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

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

鐵人賽 Modern Web DAY 2

技術 第二章、微服務與它們的溝通管道 - PHP 微服務入門與開發

以人來說,溝通很重要,而微服務也是。 對開發者而言,「服務(Service)」應該是一個能夠被單獨布署且能夠自主提供某些功能的應用程式。通常,我們會提供某...

技術 設計模式:設計模式的基本原則

為什麼需要設計模式?不是只要會用介面、抽象、類別就可以寫程式了嗎?在寫程式的初期我也是抱持這種想法,隨著工作時間的積累,寫出的程式已經比當初一頁式寫滿二、三千行...

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

技術 [Day 30] To be continued...

心得 雖然還沒把整本書的內容都整理完,但鐵人30已經告一段落~回顧一下這本書總共14章,而這30篇涵蓋了1~8、10章的內容,剩下代理模式、複合模式,以及後面的...

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

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

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

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

技術 [Day 28] 樣板方法模式 (2)

掛勾 在一個樣板方法中,它的結構大概會長這樣: class AbstractClass { void templateMethod() {...

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

技術 [Day 27] 樣板方法模式 (1)

來杯飲料吧 接下來我們回過頭看第八章─樣板模式。現在我們來看泡茶與泡咖啡的例子,它們有許多共通點:例如這是泡咖啡的程式: /*程式碼待補*/ 而這是泡茶的程式...

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

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

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

鐵人賽 Software Development DAY 30

技術 【DAY30】設計模式回顧 - 三十天總結

終於來到第30天,真的是太感動了,沒想到可以完成這一系列設計模式的介紹,最後我們就來回顧一下之前介紹各個模式時的一些要點以及總結。 物件導向原則的總結 在討論設...

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

技術 [Day 25] 狀態模式 (2)

新設計 為了加入這個規則,會發現原本的方法全部都會被改到。那堆if-else都要重新加入新的狀態,可以看看違反了前面提到的哪些規則─ 沒有遵守開放/ 封閉原則,...

鐵人賽 Software Development DAY 29

技術 【DAY29】State模式 - 升級成黃金會員的最後一哩路

終於來到第29天了!今天要介紹的也是這個系列中的最後一個模式,State 模式,我們就直接看範例吧,假設今天有個會員制度,當你存入銀行的錢有超過指定的標準,就會...

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

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

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

鐵人賽 Software Development DAY 28

技術 【DAY28】Iterator模式 - 無限輪迴的究極奧秘!

今天要介紹的是 Iterator 模式,我們就直接用例子來解釋,假設到了一間餐廳,服務員會來做接待,並且將菜單拿出來,服務員會將上面的菜色都先唸過一遍給客人知道...

鐵人賽 Software Development DAY 27

技術 【DAY27】Chain of Responsibility模式 - 排程的背後原理

最近公司專案有用到「Airflow」來去做排程的處理,剛好跟我們今天要介紹的模式一樣,當我們有一個需求是希望一個工作結束後,會去呼叫另一個工作去執行,像這樣一個...

鐵人賽 Software Development DAY 24

技術 Day 24:Visitor模式(二)

這邊是假設今天有個是要在玩家全部行動完畢時結束回合,而這邊會用Visitor獲取玩家單位的可行動數量+用Observer每次在控制狀態為等待輸入(CALWait...

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

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

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

鐵人賽 Software Development DAY 26

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

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

鐵人賽 Software Development DAY 23

技術 Day 23:Visitor模式(一)

GoF定義「定義一個能夠實行在一個物件架構中對於所有元素的操作。訪問者讓你可以定義一個新的操作,而不必更動到被操作元素的類別介面」 Visitor會去參訪所...

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

技術 [Day 21] 轉接器與門面模式 (1)

物件導向轉接器 終於又進入新的篇章啦!這個轉接器與門面模式也是極度常見與好用(也頗好理解)的模式。首先轉接器,顧名思義,就是將介面轉換為另一個介面,以滿足用戶端...

鐵人賽 Modern Web DAY 21

技術 菜鳥初探設計模式-D21

為什麼要了解設計模式 當我說"沉默螺旋"(spiral of silence),你知道我在說什麼嗎? 你如果知道,我就不用解釋繼續講下去,甚...

鐵人賽 Software Development DAY 25

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

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

鐵人賽 Software Development DAY 22

技術 Day 22:Memento模式

GoF 對備忘錄模式(Memento)的定義是:「在不違反封裝的原則下,取得一個物件的內部狀態並保留在外部,讓該物件可以在日後恢復到原先保留的狀態。」 以存...

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

技術 [Day 20] 命令模式 (4)

復原按鈕 還記得命令模式的其中一個特色是支持 "可復原" 的操作嗎?這要怎麼實現呢?首先,我們在'Command介面中加入undo()函式,...

鐵人賽 Software Development DAY 24

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

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

鐵人賽 Software Development DAY 21

技術 Day 21:Adapter模式與外接對話框插件

GoF對於轉接器模式 (Adapter)的定義是:「將一個類別的介面轉換成為客戶端期待的類別介面。轉接器模式讓原本介面不相容的類別能一起合作」 Adapte...

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

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

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

鐵人賽 Software Development DAY 20

技術 Day 20:Bridge模式(二)

在這次的範例裡,主要是說明IUnit如何取用ActionAbility的使用 這邊的AbilityEditor是用來擺放技能的地方,只要擺上對應的技能就可以在遊...

鐵人賽 Software Development DAY 23

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

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

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

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

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