美文网首页
javascript设计模式——建造者模式

javascript设计模式——建造者模式

作者: 蟹老板爱写代码 | 来源:发表于2018-03-29 16:55 被阅读0次

特点:工厂模式的特点是创建的结果都是一个完整的个体,我们对创建过程不得而知,我们只了解得到的创建结果对象。而建造者模式中我们关心的是对象的创建过程,因此我们通常将创建对象的类模块化,这样使被创建的类的每一个模块都可以得到灵活的运用与高质量的复用。

实现:创建一位应聘者,分别有基础信息类(技能和爱好),姓名解析类(分隔FirstName和LastName)和期望职位类(职位名称,职位描述)

Human类

    var Human = function(param) {
      // 技能
      this.skill = param && param.skill || '保密'
      // 兴趣爱好
      this.hobby = param && param.hobby || '保密'
    }
    Human.prototype = {
      getSkill: function() {
        return this.skill
      },
      getHobby: function() {
        return this.hobby
      }
    }

姓名处理类

    var Named = function(name) {
      var that = this;
      (function(name, that) {
        that.wholeName = name
        if(name.indexOf(' ') > -1) {
          that.FirstName = name.slice(0, name.indexOf(' '))
          that.secondName = name.slice(name.indexOf(' '))
        }
      })(name, that)
    }

职位处理类

    var Work = function(work) {
      var that = this;
      (function(work, that){
        switch(work) {
          case 'code':
            that.work = '工程师'
            that.workDescript = '每天撸代码'
            break
          case 'UI':
            that.work = '设计师'
            that.workDescript = '画画画'
            break
          default:
            that.work = work
            that.workDescript = '不知道这个职业'
        }
      })(work, that)
    }
    Work.prototype.changeWork = function(work) {
      this.work = work
    }
    Work.prototype.changeDescript = function(setence) {
      this.workDescript = setence
    }

应聘者创建类

    var Person = function(name, work) {
      var _person = new Human()
      _person.name = new Named(name)
      _person.work = new Work(work)
      return _person
    }

执行结果

    var zhengguorong = new Person('zheng guorong', 'code')
    console.log(zhengguorong.skill) // 保密
    console.log(zhengguorong.name.FirstName) // zheng
    console.log(zhengguorong.work.workDescript) // 每天撸代码
    zhengguorong.work.changeWork('UI')
    console.log(zhengguorong.work.work) // UI

相关文章

  • javascript设计模式——建造者模式

    特点:工厂模式的特点是创建的结果都是一个完整的个体,我们对创建过程不得而知,我们只了解得到的创建结果对象。而建造者...

  • JavaScript设计模式——建造者模式

    写在前面 早该更新文章了,然而最近深陷项(囹)目(圄)。为了适配万恶的IE8,不得不使用陈旧的框架Ext,从未接触...

  • Javascript设计模式——建造者模式

    建造者模式是相对比较简单的一种设计模式,属于创建型模式的一种; 定义:将一个复杂的对象分解成多个简单的对象来进行构...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

网友评论

      本文标题:javascript设计模式——建造者模式

      本文链接:https://www.haomeiwen.com/subject/hutvcftx.html