漫谈设计模式(二)---- 建立型模式

建立型的模式有五种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种模式。

相关文章
相关标签/搜索