漫談設計模式(二) 建立型模式

2022-05-03 01:24:12 字數 1822 閱讀 1785

建立型的模式有五種

首先呢,我們把這五個東西理解成五種不同的人,他們要搞事情,比比誰更厲害,比什麼呢,他們都是建立型的,那麼就比造個屋子吧。

要求是屋子需要可以賣東西和睡覺。

於是乎他們就開始造屋子了。

------- 過了半年 --------

1. 工廠模式

sleeproom = new sleephouse()
sailroom = new sailhouse() 

house = sleeproom + sailroom

工廠模式,認為生產個屋子還不容易嘛,需要什麼就去找什麼工廠,所以他是這樣造的

2. 抽象工廠模式

sleeproom = new house('

sleep

')

sailroom = new house('sail')
house = sleeproom + sailroom

造屋子,就去屋子工廠,於是他抽象了一下,去了乙個多功能工廠

3. 單例模式

house =house.instance()

house.add(

'a beg')

house.add(

'a shop

')

單例覺得不對,造個屋子應該是拿乙個屋子物件,然後給他加床,然後加個商鋪。就可以睡覺和賣東西了。

4. 建造者模式

sailroom = new

house.sailroom()

sleeproom = new

house.sleeproom()

house = sailroom + sleeproom

建造者模式,顧名思義啊,建造是乙個龐大的工作,乙個大的屋子由很多部分組成,然後每個小屋子也是乙個類。所以說建造者模式專注於構建的過程

作為乙個建造者,我們乙個一部分一部分的造,然後搭建這個屋子

5. 原型模式

house.prototype.sleep = sleep
house.prototype.sail = shop
house = new house()

原型模式的方法找了乙個可以強大的工廠,工廠需要什麼就是找別人取這個技能

聰明的人會發現。其實呢,這些方法都並不是那麼好,也沒有那麼壞,各有利弊,比如(以下純屬個人見解。如果有不好不對的,望指正)

原型模式,讓類更加靈活,不同類公用相同的方法,比如jquery就是這樣的,應該說js就是這樣的,js是用原型模式構建的

建造模式專注建造,讓問題別的更加細緻,比如antd,threejs都是這麼做的,尤其是threejs很專注構建3d應用,看threejs的文件大家會發現three的api都和上邊的示例的一樣

單例模式,koa,axios, koa-router就是這樣的,構建乙個例項,然後其他地方公用,當然也可以構建多個,然後分模組,這個也是分模組構建應用的乙個很棒的實踐

工廠模式,最常見的解決簡單問題的方法,簡明扼要。

抽象工廠模式,在工廠模式的基礎上抽象了一層,在一些情況下可以讓**復用很多。

當然巨集觀上是這樣的,微觀上可能各種模式都在同時作用。

舉了一些比較寬泛的例子,但是大家不要誤解認為這些東西是很高層面的問題,解決小問題依然很有效。需要用哪種模式解決,自行思考。

噠噠,這樣就可以理解常見的這些建立型的模式了。

然後我有機會會出結構型模式的7種模式。

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

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

設計模式 建立型模式

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

設計模式 建立型模式

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