//将一个复杂对象的构建与它的表示分离,使他们都可以独立变化
//人 类
var Human = function (param) {
this.skill = param && param.skill || '保密';
}
Human.prototype = {
getSkill: function () {
return this.skill;
}
}
//姓名 类
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.LastName = name.slice(name.indexOf(' ')+1);
}
})(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.changeDesc = function (sentence) {
this.workDescript = sentence;
}
//建造者--应聘的人
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');
console.log(person.skill);
console.log(person.name.wholeName);
console.log(person.name.FirstName);
console.log(person.name.LastName);
console.log(person.work.work);
console.log(person.work.workDescript);
person.work.changeDesc('撸得了代码 泡得了妹子');
console.log(person.work.workDescript);
设计模式之构建者模式
最新推荐文章于 2024-07-17 10:54:40 发布