JavaScript 实现建造者模式详解

作者:异步漫步时间:2026-10-24 09:49:39浏览:324

本文介绍 JavaScript 中建造者模式的实现方法。通过将复杂对象分解为简单部分并解耦构建过程,该模式便于扩展且封装性好。文章通过包工头与工人的比喻解释原理,并提供完整的 JS 代码示例,展示如何分步构建对象。

概述

建造者模式属于创建型设计模式,其结构相对简单。

核心定义在于将一个复杂对象拆解为多个简单的子对象进行构建,实现复杂构建逻辑与最终表现形式的分离,从而允许相同的构建流程生成不同的表示结果。

该模式的主要优势包括:

  • 具备良好的封装性,实现了对象创建与构建过程的解耦。
  • 易于扩展,当需求变更时,只需引入新的建造者即可实现功能扩展。

该模式的主要应用场景包括:

  • 分步骤构建一个复杂的对象。
  • 将封装过程与具体组件的创建解耦。
  • 用户无需关心组件内部的具体组装细节。

使用该模式时需注意:

  • 必须基于一个稳定的算法框架。
  • 构建过程是暴露的,这意味着调用方可以实时监控构建进度。

通俗理解如下:

假设一位富豪想要建造房屋,他只需委托包工头,由包工头负责联系施工团队进行建设,而无需亲自寻找工人。包工头明确富豪的需求并协调工人施工,省去了富豪与工人直接沟通的成本。富豪无需了解建房的具体技术细节,只需最终验收房屋即可。

代码实现

在编写代码前,我们先对需求进行分析:

1、最终产出的对象是房子。

2、包工头负责调用工人开工,并清楚各个主要施工环节。

3、工人负责具体的施工任务,如建造卧室、客厅和厨房。

4、包工头仅作为接口存在,对外提供建房子服务,不执行具体施工操作。


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()并重新赋值,即可完成整个构建流程。

以上即为 JavaScript 实现建造者模式的详细内容,更多相关技术文章请查阅本站其他资源。

作者最新文章