栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

建造者模式

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

建造者模式

建造者模式

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

使用场景

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

例子:

// 基本信息类
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); //输出 前端

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


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/243838.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号