創建型設計模式-建造者模式
定義
所謂建造者模式,就是在於細節的考慮,我們需要考慮整體與細節,才能構建出符合條件的設計。也就是我們的類了。
表現層和我們的基層構建需要分離開來。
案例分析
1,求職者需要發佈簡歷在我們平臺
2,展示求職者的特長愛好
3,隱藏求職者的個人隱私信息,聯繫方式等
let Person = function(param){
this.skill = param && param.skill || '保密';
this.hobby = param && param.hobby || '保密';
}
Person.prototype = {
getSkill(){
return this.skill
}
getHobby(){
return this.hobby;
}
}
let Named = function(name){
let that = this;
//構造器
//構造函數解析姓名的姓與名
(function(that,name){
that.fullName = name;
if(name.indexOf(' ') !== -1){
that.firstName = name.slice(0,name.indexOf(' '));
that.lastName = name.slice(name.indexOf(' '))
}
})(that,name);
}
let Work = function(work){
var that = this;
(function(that,work){
switch(work){
case 'CODER':
that.work = '軟件工程師';
that.workDescription = '編織碼農的世界'
break;
case 'UI':
that.work = '平面設計師';
that.workDescription = '設計總是那麼隨意但卻不失爲美感';
break;
case 'UE':
that.work = '設計師';
that.workDescription ='走不一般的路,共通美的永恆'
break;
default:
that.work = work;
that.workDescription = '抱歉,我們還不清楚你所選擇的職位的相關描述'
break;
}
})(that,work)
}
Work.prototype = {
changeWork(work){
this.work = work;
}
changeDescription(description){
this.workDescription = description;
}
}
創建一個求職者
let JobSeeker =function(name,work){
// 求職者緩存對象
let _jobSeeker = new Person();
// 創建求職者姓名
_jobSeeker.name = new Named(name);
//創建求職者期待職位
_jobSeeker.work = new Work(work);
return _jobSeeker;
}
//測試
let Anna = new JobSeeker('Anna Chen','UE');
console.log(Anna.name.firstName) // Anna;
console.log(Anna.work.workDescription) // 走不一般的路,共通美的永恆
所有的工廠模式,最終會得到一個整體。
參考書籍: 《JavaScript 設計模式》張容銘
同時大家也可參考這位讀者的觀後感