建造者模式是相对比较简单的一种设计模式,属于建立型模式的一种;算法
定义:将一个复杂的对象分解成多个简单的对象来进行构建,将复杂的构建层与表现层分离,使相同的构建过程能够建立不一样的表示模式;设计模式
优势:this
模式做用:spa
注意事项:设计
白话解释:code
某土豪想建一个房子,某土豪只须要找包工头,包工头再去找施工团队来建造房子,而不须要土豪本身去一个个的找工人搭建施工团队开始施工;包工头知道土豪的需求,也知道哪里能找到工人搭建施工团队,工人能够直接干活,中间节省了土豪直接和工人沟通的成本;土豪不须要知道房子该怎么建,土豪只须要最后能验收到房就行;对象
在写代码以前咱们先分析一下:blog
function Fangzi(){ this.woshi = ""; this.keting = ""; this.chufang = ""; } function Baogongtou(){ this.jianfangzi = function(gongren){ gongren.jian_woshi(); gongren.jian_keting(); gongren.jian_chufang(); } } function Gongren(){ this.jian_woshi = function(){ console.log("卧室建好了!"); } this.jian_keting = function(){ console.log("客厅建好了!"); } this.jian_chufang = function(){ console.log("厨房建好了!"); } this.wangong = function(){ var fangzi = new Fangzi(); fangzi.woshi = "ok"; fangzi.keting = "ok"; fangzi.chufang = "ok"; return fangzi; } } let gongren = new Gongren(); let baogongtou = new Baogongtou(); //卧室建好了! //客厅建好了! //厨房建好了! baogongtou.jianfangzi(gongren); var my_fangzi = gongren.wangong(); /* Fangzi={ chufang: "ok" keting: "ok" woshi: "ok" } */ console.log(my_fangzi);
上述代码中咱们能够看到,Gongren()里面是具体的施工过程,也就是具体作的事情,Fangzi()里面一开始都是空的,没有客厅、厨房、卧室;Baogongtou()里面只是对外宣传能够建房子,而后传入工人方法调用工人进行施工;工人方法执行完了也就是施工完了,而后就是交房;一个新的方法里面实例化Fangzi()的方法,在新方法里面从新赋值便可;
接口