设计模式——建造者模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式——建造者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
建造者模式
示例
描述
將一個復雜的對象構建層與其表示層相互分離, 同樣的構建過程中可采用不同的表示. 建造者模式與工廠模式的不同之處在于, 它更多關心
創建對象的過程, 甚至于每一個創建對象的細節.
案例
有一批求職者到招聘網站發布自己的簡歷.要求:除了興趣愛好可以發布在頁面上, 個人聯系方式不能發布, 要讓需求公司找招聘平臺.
需要找的工作可以分類.
分析明確創建內容:
創建用戶信息如用戶名等需要獨立處理, 因為需要隱藏顯示
應聘者需要獨立創建, 因為他們代表一個整體
工作職位需要獨立創建, 因為他們是應聘者擁有的一部分, 而且種類較多
實現
// 創建一位人類 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() {var that = this;// 構造器中通過傳入的職位特征來設置相應職位以及描述(function(work, that) {switch(work) {case 'code':that.work = '工程師';that.workDescript = '每天沉醉于編程';break;case 'UI':// ...case 'UE':// ...default:that.work = work;that.workDescript = '對不起, 我們還不清楚您所選擇職位的相關描述';}})(work, that); };//更換期望的崗位 Work.prototype.changeWork = function(work) {this.work = work; };// 添加對職位的描述 Work.prototype.changeDescript = function(setence) {this.workDescript = setence; };/*** 應聘者建造者* 參數 name: 姓名* 參數 work: 期望職位*/ var Person = function(name, work) {// 創建應聘者緩存對象var _person = new Human();// 創建應聘者姓名解析對象_person.name = new Named(name);// 創建應聘者期望職位_person.work = new Work(work);// 將應聘者對象返回return _person; };// test: var person = new Person('xiao ming', 'code'); console.log(person.skill); // 保密 console.log(person.name.FirstName); // xiao console.log(person.work); // 工程師 console.log(person.work.workDescript); // 每天沉醉于編程person.work.changeDescript('更改一下職位描述'); console.log(person.work.workDescript); // 更改一下職位描述總結
以上是生活随笔為你收集整理的设计模式——建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器带你学前端
- 下一篇: .NET中的枚举(Enum)