定义:建造者模式(Builder Pattern)也被称为生成器模式,是一种创建型设计模式。它主要解决的是将部件和其组装过程分开,一步一步创建一个复杂的对象的问题。在这种模式下,用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。(它将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示)
建造者模式关注的是我们建造的一个过程,和工厂模式的区别在于,工厂模式,我们关注的就是结果,不管东西怎么来的,而建造者模式,就是拆开看内部,是怎么构建出来的,上图中的navBar(导航栏),还有List,其实就是一个对象的部件,正常我们写导航栏的时候,一般会经过三个步骤:1.初始化dom,也就是初始化元素节点,2.从后端哪里使用axios获取导航栏的数据,3.将获取到的数据渲染到dom节点上,导航栏下边的列表,也就是list,需要经历的方法,也是这三个步骤。
正常如果我们要去调用已经封装好的方法,例如导航栏(Navbar)里的init(初始化)getData(后端请求数据)render(渲染)等,就会去let nav = new Navbar(),接着使用nav.init(),或者nav.getData()等,但是我们可以看到,如果我们由其他的部件,也需要去调用方法的话,例如list那就也需要去在let list - new List()这样去调用去获取,此时不仅代码量会增加,阅读也比较难受,此时我们就可以使用建造者模式,重点是要记住,将一个对象的构建与它的表示分隔开。上面两个图我们已经把部件写好了,接下来就是写组装过程:
我们创建一个类,这个类就是我们的建造者,用来组装对象,我们只需要知道如何调用建造者来构建产品即可,无需关心产品的具体构建过程。此时就很好的把部件和构建过程给分离了,后期如果要给部件加功能,直接找到对应的部件里面加就可以,如果要改构建过程,直接找建造者去修改就可以,此时代码的可读性和可维护性就大大提高了,当我们使用的时候,只需要创建一个建造者对象const op = new Creator(),并且调用这个对象里的构建方法op.starVuild(new Navbar()),就可以构建我们的功能了,后期需要构建那个部件功能,只需要给构建者传入需要构建的部件对象就可以。这个就是建造者模式的使用方法和案例,大家可以先看清楚理念和使用方法,在把自己写好的项目去构建优化。