建造者模式可以将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。也就是说,如果我们用了建造者模式,那么用户只需要指定需要建造的类型就可以得到她们,而具体建造的过程和细节就不需要知道了。建造者模式实际就是一个指挥者,一个建造者,一个使用指挥者调用具体建造者工作得出结果的客户。
建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。例如,我们需要买一套房子,此时我们只需要找到心仪楼盘的开发商就可以了,然后由开发商和包工头指导建筑工人们盖房子,至于房子是怎么盖起来的,我们不知道,也不需要知道。
建造者模式的作用:
- 分步创建一个复杂的对象
- 解耦封装过程和具体创建的组件
- 无需关心组件如何组装
<script> //我们希望得到的房子 function Fanzi(){ this.woshi = ''; this.keting = ''; this.chufang = ''; } //包工头调用工人进行开工,告诉工人房子的具体需求 function Baogongtou(){ this.gaifangzi = 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.jiaogong = function(){ var _fangzi = new Fanzi(); _fangzi.woshi = 'ok'; _fangzi.keting = 'ok'; _fangzi.chufang = 'ok'; return _fangzi } } var gongren = new Gongren(); var baogongtou = new Baogongtou(); baogongtou.gaifangzi(gongren); var myHouse = gongren.jiaogong(); console.log(myHouse); </script>
建造者模式使用注意事项:
- 一定要一个稳定的算法进行支持
- 加工工艺是暴露的