今天我們長話短說,Composite模式主要是希望可以透過同樣的型式對每個物件做操作,並且在操控的物件中是有保持著一種層級關係。以今天的例子來說,我想要只透過一...
今天要來介紹Prototype模式,簡單來說就是「複製」,在第19天時我們有提到說建立物件池去保存昂貴物件,那麼當我現在已經財富自由了,不用去管制購買機器的數量...
我們在 DAY6 有用麥當勞的例子來介紹 Facade模式,今天我們再用麥當勞來舉例。假設今天到了麥當勞櫃台,我們不點套餐了,就是單點(雖然比較貴XD),而店員...
今天要介紹的是 Object Pool模式,會以工廠的機器為例。假設今天要生產晶片,需要高精密的機器才能去生產,而這台機器又非常昂貴,而且做出機器需要花的時間很...
各位應該都有在 Youtube 看過影片的經驗吧!如果想要看到影片,可以直接在 Youtube 上面搜尋關鍵字,或者在各別 Youtuber 的頻道中看到他們的...
前言 今天前進到了第四章─ 工廠模式,這章篇幅較長,在實際運用中也非常常見,值得好好理解,不但可以運用在程式設計上,也常常在溝通時聽到這邊用simple fac...
一開始在做開發的時候,可能會因為專案小,或是時間上的因素使用工廠模式(或是不使用任何的設計模式)來撰寫程式。但常常會發現經過開發週期不斷的迭代(或是用戶需求的改...
裝飾器模式 在咖啡這個案例中,我們不希望由繼承這麼僵化的架構來實作,因此我們使用裝飾器模式。而在裝飾器模式中,我們先打造基底部分,其他配料都在"執行期...
前言 終於進入了第三章─ 裝飾器模式!首先可以稍微回顧一下第一章提到的其中一個原則─ 多用"組合",少用"繼承",這章會...
前面的篇章中分享了SOLID五大原則,我們可以在分析、設計時不斷的反思是否有遵循這些原則,不至於到了最後才發現,我們做出一個結構松散的架構。也分享了一些OOA、...
第四個原則 前面介紹策略模式時,就提到過設計的程式希望是有彈性的,而 鬆耦合(lossely coupled) 就可以提升程式的彈性。所謂的鬆耦合,就是降低物件...
昨天提到,可以用Singleton模式,讓實體永遠只會建立一次。但如果現在是在多執行序的環境下,會發生什麼事呢? 第一個執行緒檢查實體是否存在。因為實體不存在...
再延續昨天的例子,今天的我終於下定決心要減肥了,我規定我一天只能喝一杯奶茶,所以如果去買奶茶的話,店員只會給我一杯,如果再要第二杯,店員只會把剛剛做好的第一杯再...
延續昨天的例子,我們在製作飲料的過程中,其實整體步驟都是蠻相像的,不外乎就是先煮沸水,加入茶葉煮成茶,加入冰塊以及配料,最後封膜打包給客人,這一系列的流程很類似...
之前大學時期曾經短暫的在飲料店打過工,想說體驗一下不同的工作,那時候也是我體重的巔峰,因為每天都可以喝飲料,只要在店裡,基本上所有的飲料都可以喝,而且想要加什麼...
今天我們要來談談設計模式的原則與策略,理解設計模式本質機制和它們背後的原則概念。當累積這些知識後,即使在未來寫程式時,還沒有發現設計模式的情況下,也能夠知道該怎...
觀察者模式的情境 所謂的觀察者模式,顧名思義,主要就是由兩個角色所組成:觀察者(observer)與被觀察者(subject);也可以用發布者與訂閱者來想像它們...
昨天我們談到了 Factory模式,工廠可以生產實作同個介面 IShape的各種形狀。假設今天再多一個條件是「顏色」,而店家會去販售特定形狀的卡片搭配特定顏色的...
RECAP 有了各種設計模式的定義,就可以用短短的名詞來代表背後的概念,幫助我們在設計程式時有效溝通,準確傳達想法;經由學習這些經過時間考驗與綜合眾工程師智慧的...
今天介紹的是工廠模式,因為會跟明天的 Abstract Factory 有點關係,所以先來說一下,這個工廠模式,相對我們前幾天談到的其他模式都還要單純很多,也很...
讓我們沿用上一篇轉接頭的例子,在之前我們都一直是以「螢幕」作為一端去跟電腦做連線,假設現在我們把範圍擴大,將螢幕做分類,可能有不同規格類型的螢幕會需要跟電腦做連...
集大成的UML 經過前幾天的內容,以上都了解後,應該也可以順利地組合出最終UML的樣子了:(參考原書以draw.io繪製)可以看到會變的部分被封裝了起來,其他行...
我們在昨天有留下一個問題,假設今天變成是 AVG的外接口想要去轉成 HDMI,那是不是就要再多一個 AvgToHdmiAdapter 的類別出來並且一樣去繼承...
第二個原則 接續昨天的問題,我們要來看如何更彈性的設計出這個架構!那要怎麼應用呢?書本提到了第二個原則: 針對"介面"而非"實作...
軟體開發的不變真理─改變 設計程式時,當我們收到需求之後,要做出來很容易,要做得好的上下限卻差很多。如果你能確保這軟體寫完用一次就不需要了,未來不支持更新,那你...
前面兩天有提到 Facade 和 Adapter 兩種設計模式,裡面的範例程式碼內容基本上是環繞在三個物件導向中的基礎概念:物件、封裝、抽象類別。今天的主要目的...
外接螢幕的故事 之前疫情嚴重時有居家工作一段時間,而公司的筆電是14吋,在家的話想當然就是要爽爽外接大螢幕嘛(竊笑)!於是我就跑去賣場買了一台27吋的螢幕,配合...
今晚…我想來點…麥當勞 大家應該都有去麥當勞點餐過的經驗,如果今天我想來個二號餐(雙層牛肉吉士堡),不可能走進去跟做薯條的人說我要一份薯條,再去漢堡區說我要一份...
小心設計模式別亂用 介紹 設計模式就是過去的人,根據常見的軟體設計的問題,提出的解決方案。設計模式總共有23種,根據情境分成三大類型,建立型、結構型、行為型。...
前言 萬事起頭難,這兩天就先從最初的設計模式入門開始,開始感受設計模式的用處,並掌握設計模式的幾項大原則吧! 物件導向 Design Pattern充分使用OO...