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

建立型的模式有五種jquery

  • 工廠模式(Factory Pattern)
  • 抽象工廠模式(Abstract Factory Pattern)
  • 單例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

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

要求是屋子須要能夠賣東西和睡覺。axios

因而乎他們就開始造屋子了。api

 

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

 

五我的都把屋子造好了,這些聰明的人類分別用本身的方法造出了屋子,咱們一塊兒來看看吧。。。koa

 

1. 工廠模式ui

sleeproom = new SleepHouse()
sailroom = new SailHouse() 

house = sleeproom + sailroom   

 工廠模式,認爲生產個屋子還不容易嘛,須要什麼就去找什麼工廠,因此他是這樣造的spa

 

2. 抽象工廠模式prototype

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

 造屋子,就去屋子工廠,因而他抽象了一下,去了一個多功能工廠3d

 

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種模式。

相關文章
相關標籤/搜索