您的位置:首页 > Web前端 > JavaScript

javascript设计模式--Builder

2016-04-23 12:35 711 查看
Builder:将一个复杂对象的构建层与其表示层相互分离,同样的构件过程可采用不同的表示.

//创建一位人类
var Human = function(param){
//技能
this.skill = param && parma.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(' '));
}
})
}
//实例化职位类
var Work = function(work){
var that = this;
//构造器
...
}
//更新期望的职位
Work.prototype.changeWork = function(work){
this.work = work;
}
//添加对职位的描述


/***
*应聘者建造者
*参数 name
*参数 work
**/
var Person = function(name,work){
//创建应聘者缓存对象
var _person = new Human();
//创建应聘者姓名解析对象
_person.name = New Named(name);
//创建应聘者期望职位
_person.work = new Work(work);
//将创建者返回
return _person;
}


使用方式

var person = new Person('xiao ming','code');


工厂模式创建的是一个对象,他追求的是创建的结果,别无他求,所以那仅仅是一个实实在在的创建过程.而建造者模式就有所不同,它不仅仅可得到创建的结果,然而也参与了创建的具体过程.而创建的具体实现的细节也参与了干涉,可以说创建的对象更复杂,或者所这种模式创建的是一个复合对象.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: