继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

建造者模式

为爱心太软
关注TA
已关注
手记 151
粉丝 1.4万
获赞 860

建造者模式

通过多个简单对象的有序组合,装配出一个复杂对象,就叫做建造者模式。

使用场景

如果创建一个对象特别复杂,其中有多个成员需要单独处理,我们可以把需要单独处理的成员抽象为子类,由子类实现具体的组建过程。
比如要创建一个实习人员的岗位信息,其中学历和职位需要单独处理:

例子:

// 基本信息类
var Person = function (name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}
// 学历类
var School = function (school) {
    this.leve = school + (function (school) {
        switch (school) {
            case '专科':
                return school + ':实习工资1000~2000元';
                break;
            case '本科':
                return school + ':实习工资2000~4000元';
                break;
            case '研究生':
                return school + ':实习工资4000~6000元';
                break;
        }
    })(school);
}
// 职位类
var Work = function (work) {
    this.role = work + (function (work) {
        switch (work) {
            case '前端':
                return ':掌握JavaScript、CSS、HTML';
                break;
            case '后端':
                return ':掌握Java、PHP、SQL';
                break;
            case '运维':
                return ':掌握linux、OpenStack、Hadoop';
                break;
        }
    })(work);
}
// 建造者模式
var worker = function (name, age, sex, school, work) {
    var _p = new Person(name, age, sex);
    _p.school = new School(school);
    _p.work = new Work(work);
    return _p;
};
//调用建造者函数
var p = worker('Tom', '21', 'male', '本科', '前端');

// 测试
console.log(p.name); //输出 Tom
console.log(p.age); //输出 21
console.log(p.sex); //输出 male
console.log(p.school.leve); //输出 本科
console.log(p.work.role); //输出 前端

建造者模式与工厂模式非常相似,但它们的侧重点不同:工厂模式的主要职责是创建,而建造者模式的主要职责是对对象的组装,顺序不同往往创建的对象也不同。


如有错误,欢迎指正,本人不胜感激。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP