国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

設計模式——建造者模式

jeffrey_up / 1606人閱讀

摘要:建造者模式示例描述將一個復雜的對象構建層與其表示層相互分離同樣的構建過程中可采用不同的表示建造者模式與工廠模式的不同之處在于它更多關心創建對象的過程甚至于每一個創建對象的細節案例有一批求職者到招聘網站發布自己的簡歷要求除了興趣愛好可以發布在

建造者模式 示例 描述

將一個復雜的對象構建層與其表示層相互分離, 同樣的構建過程中可采用不同的表示. 建造者模式與工廠模式的不同之處在于, 它更多關心
創建對象的過程, 甚至于每一個創建對象的細節.

案例

有一批求職者到招聘網站發布自己的簡歷.要求:除了興趣愛好可以發布在頁面上, 個人聯系方式不能發布, 要讓需求公司找招聘平臺.
需要找的工作可以分類.

分析明確創建內容:

創建用戶信息如用戶名等需要獨立處理, 因為需要隱藏顯示

應聘者需要獨立創建, 因為他們代表一個整體

工作職位需要獨立創建, 因為他們是應聘者擁有的一部分, 而且種類較多

實現
// 創建一位人類
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);             // 更改一下職位描述

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80151.html

相關文章

  • 深入理解建造模式 ——組裝復雜的實例

    摘要:而建造者模式則是要求按照指定的藍圖建造產品,它的主要目的是通過組裝零配件而產生一個新產品。最后通過一個套餐實例,介紹了建造者模式在實例中的基本使用手段。 歷史文章回顧: 設計模式專欄 深入理解單例模式 深入理解工廠模式 歷史優質文章推薦: 分布式系統的經典基礎理論 可能是最漂亮的Spring事務管理詳解 面試中關于Java虛擬機(jvm)的問題看這篇就夠了 無論是在現實世界中還是在軟件...

    sanyang 評論0 收藏0
  • 我的Java設計模式-建造模式

    摘要:汽車本身就是復雜產品對象,其制造過程可以形象的表示建造者模式。另一輛法拉利,。法拉利具體建造者代碼如下構造法拉利的第一部分。咻咻法拉利已造好三建造者模式的優缺點優點降低代碼耦合度。 在未上大學之前,一直有個夢想I have a dream!,就是能成為一位汽車工程師,一直幻想著開著自己設計的汽車飛奔在公路上,迷倒了萬千少女。咳咳~~雖然現在沒實現我的dream,但夢想還是得有的。 說到...

    elisa.yang 評論0 收藏0
  • PHP設計模式(五)建造模式(Builder)

    摘要:與工廠模式相比,建造者模式一般用來創建更為復雜的對象,因為對象的創建過程更為復雜,因此將對象的創建過程獨立出來組成一個新的類導演類。 什么是建造者設計模式 建造者模式:將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示的設計模式。 設計場景: 有一個用戶的UserInfo類,創建這個類,需要創建用戶的姓名,年齡,愛好等信息,才能獲得用戶具體的信息結果。如: 這是一個...

    KunMinX 評論0 收藏0
  • JavaScript設計模式系列三:建造模式

    摘要:優點建造者模式的封裝性很好,對象本身與構建過程解耦。建造者模式很容易進行擴展。適用場景需要生成的對象具有復雜得內部結構且內部屬性本身相互依賴建造者模式的代碼實現建造者模式主要有個部分產品類建造者類指揮者類客戶。建造者完成相應的部分。 建造者模式 建造者模式(builder pattern)比較簡單,它屬于創建型模式的一種,將一個復雜的對象分解成多個簡單的對象來進行構建,將復雜的構建層與...

    CloudDeveloper 評論0 收藏0
  • JS 設計模式 八(建造模式

    摘要:即建造者模式可以強制實行一種分步驟進行的建造過程。指導類負責調用適當的建造者來組建產品,指導類一般不與產品類發生依賴關系,與指導類直接交互的是建造者類建造者模式優點建造者模式的封裝性很好。 建造者模式 將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。主要解決在軟件系統中,有時候面臨著一個復雜對象的創建工作,由于需求的變化,這個復雜對象的某些部分經常面臨著劇烈的變化...

    tanglijun 評論0 收藏0

發表評論

0條評論

jeffrey_up

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<