javaScript设计模式(3)——构造者模式

模拟场景:客户需要一套房子,他找到包工头(指挥者),包工头分配人员进行相应的具体建造操作,然后工人可以垒墙、造门等基本建造技能,最后建好房子

/*房子模型*/
function House() {
    if (!this instanceof House){
        return new House();
    }
    this.bedRoom = 'bed room';
    this.livingRoom = 'living room';
    this.restRoom = 'rest room'
}


/*具体建造类,做具体的事情*/
function Worker() {
    if (!this instanceof Worker){
        return new Worker();
    }
    this.zaomen = function () {
        console.log('造门');
    }
    this.leiqiang = function () {
        console.log('垒墙');
    }
    this.ankuanghu = function () {
        console.log('安窗户');
    }
    this.get_house = function () {
        var house = new House();
        return house;
    }
}


/*总指挥者,分配人员做具体的事情*/
function Director() {
    if (!this instanceof Director){
        return new Director();
    }
    this.direct_build = function (worker) {
        worker.zaomen();
        worker.ankuanghu();
        worker.leiqiang();
    }
}


/*客户提需求,总的执行过程,房主请director建房子,director负责人员管理调度,不做具体的事情,房主从工人手中取得房子。*/
var worker = new Worker();
var director = new Director(worker);
director.direct_build(worker);
var succ_house = worker.get_house();
console.log(succ_house);

应用场景:复杂对象(包含若干子对象),随着需求不断的变化,此复杂对象的一部分会剧烈变化,但是整体的组合相对稳定。而我们如何用一种封装方式隔离各种部分的变化而保持整体结构的稳定就是建造者模式的任务。

一句话汇总:就是复杂对象的构造与表示分离,用户只需要指定类型,不需知道具体过程。

转载于:https://www.cnblogs.com/flora-dn/p/7677255.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值