關於設計模式中建立型模式的一點理解

2021-06-10 08:00:15 字數 1515 閱讀 4386

這兩天在看有關設計模式的東西,首先入手的是建立型模式,包括工廠模式、抽象工廠模式、生成器模式、原型模式和單例模式五種,通過幾天的學習,有了一點自己的理解。如何來區分這五種模式呢,我想通過吃飯的例子來說明。

首先我們一般是在家裡自己做飯吃的,一般是乙個人掌勺,想吃什麼就吃什麼,但是要事先商量好買好菜,這個就是工廠模式了,乙個工廠類,可以設計成能生產多種產品的類,但是在使用時具體生產什麼類有使用者輸入的引數決定,這樣好是很好,但是人多了就不好了,我要做很多的菜,可能前面做的涼了,後面的還沒做好,並且做這麼多,說不定中間就會忘記自己到底做了哪些菜了,工廠模式也是一樣,如果使用者要用工廠類建立多個物件,就有可能造成混淆,連自己多記不清都要建立什麼了,怎麼解決這個問題呢?呵呵,很好解決,人多了就上飯店唄。

到了飯店,拿出選單一看,點菜有兩種方式,一種是**,你點一種**,那麼你這次吃飯的主菜和甜點什麼的就都給你確定了,你就等著吃就是了,這就是抽象工廠模式,他通過管理七八個廚師,建立的是乙個產品族,就像你可以點不同的**一樣,你也可以利用抽象工廠模式建立不同的產品族,但是每個產品族中的產品是不能改變的。抽象工廠模式就是對工廠模式的進一步包裝,主要也是應用於產品族的建立。**好是很好,我只要說要哪個**,他就會拿我的意思做出來,但是如果這種情況,**中有某一道菜有人不喜歡吃或者有某種禁忌,但其他菜又都是很好而其他**中有沒有的時候,那我不能點這個**豈不是他可惜了,那我們就用另一種方式點菜吧

另一種方式就是我就主菜放在一起,甜點放在一起,。。。。,你可以隨意點你需要的,但是你必須每種都要點,比且規定主菜要點8個,甜點兩個。。。。,這就是生成器模式來了,他與抽象工廠模式的區別在於可以自由組合,更加人性化了,使用範圍更廣。

當然,假如你到了乙個新的環境,你完全不知道該吃什麼或者這裡什麼東西適合你的口味,怎麼辦呢,哈哈,正好碰到一老鄉了,你看他吃的挺香的,如是你對服務員說「給我上和他一摸一樣的菜,但是少放點辣椒」,這不就知道吃什麼了嗎!這就是原型模式,望文生義,即將別人的複製一下拿來自己用,其中可以根據類本身提供的方法對其中的一些特性進行修改,如「少放點辣椒」。

當然你到了乙個新的環境時還有一種點菜方式,「老闆,你們這裡的特色菜是什麼?給我上你們的特色菜吧」,哈哈,不幸的是,該店的特色菜是烤全豬,烤全羊,給你上一道你能吃完嗎?還好老闆也想到了這一點,所以他們一天只做一種,如今天做了烤全豬就不會做烤全羊了,並且由第乙個點這道菜的人決定今天特色菜是什麼,這樣,一整天的客人就吃這道菜了,每點這道菜的人都是從上面切一部分下來吃,這就是單例模式,很容易理解,乙個程式中只有該類的乙個物件,並且是全域性的,之後對該類即使使用的是看似建立的手法,但實際上使用的也是同乙個例項。

好了,關於這五種模式的理解已經說完了,下面說一下實現方式吧,工廠模式是利用類的抽象完成的,uml如下:

對於抽象工廠模式,它僅僅是對工廠模式進行進一步包裝處理,uml圖如下:

比較晚了,後面幾種模式就不貼圖算了,還得自己慢慢畫,有時間再補

設計模式 建立型模式 原型模式

1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

設計模式 建立型模式

建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...

設計模式 建立型模式

建立型模式 工廠方法 核心 客戶端呼叫具體的工廠,讓工廠去決定例項化哪個具體的類。核心 為工廠類建立對應的具體的類,表現為和對應的具體類的依賴關係。抽象工廠類 inte ce productfactory 具體a工廠 class concreteproductfactorya productfact...