Simple Factory design pattern

更新於 發佈於 閱讀時間約 1 分鐘
直接來看例子吧!
假設不管是什麼口味的pizza,都會有「準備/烘烤/切/打包」四個步驟。
每種pizza的材料準備/烘烤/切/打包的方式都不同,因此有自己的方法實作。

如同範例程式碼,今天客人點了一份Cheese Pizza,不就是直接new出來,然後經過製作的四個步驟就完成啦?!
是,沒錯。 但是客人有可能在不同情境下,點了很多pizza,也就是製作pizza的程式碼可能散落在系統的各個地方,這樣假如是一個大系統,會非常難維護!
因此,Simple Factory就誕生啦! 如下圖,我們建立一個廚房class,專門用來製作披薩!
因此,今天不管在系統的任何地方想要製作pizza,只需要傳入口味參數就可以得到做好的披薩了,Kitchen這個類別就是所謂的簡單工廠類別,將製作披薩的程式碼集中在這個廚房類別中,因此提高了系統的可維護性!
但是問題來了,假如今天apple pizza不切了,或者是apple pizza的製作步驟換了,或者是有新口味的pizza要開賣了,這個Kitchen class的程式碼就要修改,未來這個地方的程式碼就會越來越雜,甚至這個地方程式碼改壞了,造成整個系統都不work!
因此,就有工廠模式誕生啦!
為什麼會看到廣告
avatar-img
21會員
161內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
Java abstract class和interface的使用時機
建議先看過Golang 入門這篇再閱讀這篇! 使用Go官方提供的net/http library就能建立http web伺服器囉!
Java abstract class和interface的使用時機
建議先看過Golang 入門這篇再閱讀這篇! 使用Go官方提供的net/http library就能建立http web伺服器囉!
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
想像你進入一家高級餐廳準備點餐。菜單上的選擇繁多,而你不只是想要某個固定套餐,而是希望有些特別的要求,比如多點一份沙拉,少放一點醬料。這樣的客製化訂單流程,其實就很像建造者模式。 建造者模式是一種專門用來建立複雜物件的設計模式。它將物件的建立過程分解成一個個小步驟,讓你可以靈活選擇每一個步驟的內容
Thumbnail
每次到了下午三四點就會忍不住感覺到餓,但是這個時間吃晚餐似乎太早,吃太多東西會擔心晚餐吃不下,吃小點心又覺得不夠解嘴饞,這個時候烤片熱騰騰的6吋手工窯烤披薩剛剛好。 披薩時刻Pizza Times的冷凍手工窯烤披薩,只要用氣炸鍋或是烤箱加熱4~5分鐘,就可以吃到就像現烤般美味的手工窯烤披薩。而且口
Thumbnail
這家披薩有個好處是:即使你只有點一個披薩,最少也可以吃到兩種口味。
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
Thumbnail
本週料理 松露野菇起司披薩 G的廚房求生指南守則七: 練成鐵砂掌的第一步,做好冰敷的心理及實際準備。
Thumbnail
在創業過程中,產品品質好與穩定,是最基本要做的事情,但是顧客看重的其實還有顧客關係的維持與互動,留住消費過的顧客,讓他們再次購買你的產品服務,變成很重要的事。在創業過程中,先學會做事,再學會做人,之後才是找人。
Thumbnail
在臺北市中正區的背包廚房,手工披薩的特色在於餅皮很薄,整體吃起來輕鬆、無負擔。這篇文章介紹了背包廚房的餐點種類,店內用餐的感受以及來店用餐的人潮。可以透過這篇文章瞭解臺北市美食的一個選擇,吸引對美食有興趣的人前來品嚐。
曾經接到不少客人會詢問,「你們的甜點/蛋糕,是不是*當天*現做/現烤?」每當我們老實地回答「不是」時,就曾碰過客人認為只要並非「當天現做」,對方直接與「不新鮮」劃上等號,進而取消我們的訂單。雖然無奈,但只能予以尊重。我們明白觀念不是三言兩語就能改變。雖然嘗試溝通,但因為客人停留時間有限,或非專業
Thumbnail
同樣是餐飲業,客人消費的心理大不相同 每個人一定都有去餐廳點餐的經驗,有不少都改成線上點餐縮減前台服務人員,但最基礎的菜單版面都還是以推薦套餐-單點-特色料理-甜點飲品這種順序做排列組合,那如果在小吃攤看到這種菜單,會讓你想點餐還是缺乏興趣呢? 舉個例子,你去買鹹酥雞看到菜單上第一行寫著,套
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
想像你進入一家高級餐廳準備點餐。菜單上的選擇繁多,而你不只是想要某個固定套餐,而是希望有些特別的要求,比如多點一份沙拉,少放一點醬料。這樣的客製化訂單流程,其實就很像建造者模式。 建造者模式是一種專門用來建立複雜物件的設計模式。它將物件的建立過程分解成一個個小步驟,讓你可以靈活選擇每一個步驟的內容
Thumbnail
每次到了下午三四點就會忍不住感覺到餓,但是這個時間吃晚餐似乎太早,吃太多東西會擔心晚餐吃不下,吃小點心又覺得不夠解嘴饞,這個時候烤片熱騰騰的6吋手工窯烤披薩剛剛好。 披薩時刻Pizza Times的冷凍手工窯烤披薩,只要用氣炸鍋或是烤箱加熱4~5分鐘,就可以吃到就像現烤般美味的手工窯烤披薩。而且口
Thumbnail
這家披薩有個好處是:即使你只有點一個披薩,最少也可以吃到兩種口味。
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
Thumbnail
本週料理 松露野菇起司披薩 G的廚房求生指南守則七: 練成鐵砂掌的第一步,做好冰敷的心理及實際準備。
Thumbnail
在創業過程中,產品品質好與穩定,是最基本要做的事情,但是顧客看重的其實還有顧客關係的維持與互動,留住消費過的顧客,讓他們再次購買你的產品服務,變成很重要的事。在創業過程中,先學會做事,再學會做人,之後才是找人。
Thumbnail
在臺北市中正區的背包廚房,手工披薩的特色在於餅皮很薄,整體吃起來輕鬆、無負擔。這篇文章介紹了背包廚房的餐點種類,店內用餐的感受以及來店用餐的人潮。可以透過這篇文章瞭解臺北市美食的一個選擇,吸引對美食有興趣的人前來品嚐。
曾經接到不少客人會詢問,「你們的甜點/蛋糕,是不是*當天*現做/現烤?」每當我們老實地回答「不是」時,就曾碰過客人認為只要並非「當天現做」,對方直接與「不新鮮」劃上等號,進而取消我們的訂單。雖然無奈,但只能予以尊重。我們明白觀念不是三言兩語就能改變。雖然嘗試溝通,但因為客人停留時間有限,或非專業
Thumbnail
同樣是餐飲業,客人消費的心理大不相同 每個人一定都有去餐廳點餐的經驗,有不少都改成線上點餐縮減前台服務人員,但最基礎的菜單版面都還是以推薦套餐-單點-特色料理-甜點飲品這種順序做排列組合,那如果在小吃攤看到這種菜單,會讓你想點餐還是缺乏興趣呢? 舉個例子,你去買鹹酥雞看到菜單上第一行寫著,套