javascript設(shè)計模式(一)工廠模式

工廠模式分為兩種蓖宦,簡單工廠模式和抽象工廠模式。

  • 簡單工廠模式
function createPeople(name, time, gender) {
        let p = new Object();
        p.name = name;
        p.time = time;
        p.gender = gender;
        p.getName = function () {
            return this.name
        };
        return p
    }
let p1 = createPeople('scc','1995','male'); //

可以解決多個類似對象聲明的問題;也就是為了解決實例化對象產(chǎn)生重復(fù)的問題油猫。

  • 抽象工廠模式(其實就是復(fù)雜點的工廠模式)

復(fù)雜的工廠模式定義是:用父類來創(chuàng)建子類稠茂,可以在各自的子類里定義各自需要的方法。

    // 定義自行車的構(gòu)造函數(shù)
    var BicycleShop = function (name) {
        this.name = name;
        this.method = function () {
            return this.name;
        }
    };
    BicycleShop.prototype = {
        sellBicycle: function (model) {
            var bicycle = this.createBicycle(model);

            // 執(zhí)行A業(yè)務(wù)邏輯
            bicycle.A();

            // 執(zhí)行B業(yè)務(wù)邏輯
            bicycle.B();

            return bicycle;
        },
        createBicycle: function (model) {
            throw new Error("父類是抽象類不能直接調(diào)用情妖,需要子類重寫該方法");
        }
    };

    // 實現(xiàn)原型繼承
    function extend(Sub, Sup) {
        //Sub表示子類睬关,Sup表示超類(父類)
        var F = function () {};

        F.prototype = Sup.prototype;

        Sub.prototype = new F();

        Sub.prototype.constructor = Sub;

        if (Sup.prototype.constructor === Object.prototype.constructor) {
            // 檢測超類原型的構(gòu)造器是否為原型自身
            Sup.prototype.constructor = Sup;
        }

    }
    var BicycleChild = function (name) {

        this.name = name;

        // 繼承構(gòu)造函數(shù)父類中的屬性和方法
        BicycleShop.call(this, name);
    };

    // 子類繼承父類原型方法 
    extend(BicycleChild, BicycleShop);

    // BicycleChild 子類重寫父類的方法
    BicycleChild.prototype.createBicycle = function () {
        var A = function () {
            console.log("執(zhí)行A業(yè)務(wù)操作");
        };
        var B = function () {
            console.log("執(zhí)行B業(yè)務(wù)操作");
        };
        return {
            A: A,
            B: B
        }
    }
    var childClass = new BicycleChild("scc");
    console.log(childClass);

兩個好處:
第一:弱化對象間的耦合,防止代碼的重復(fù)毡证。在一個方法中進行類的實例化电爹,可以消除重復(fù)性的代碼。第二:重復(fù)性的代碼可以放在父類去編寫料睛,子類繼承于父類的所有成員屬性和方法丐箩,子類只專注于實現(xiàn)自己的業(yè)務(wù)邏輯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恤煞,一起剝皮案震驚了整個濱河市屎勘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱州,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件法梯,死亡現(xiàn)場離奇詭異苔货,居然都是意外死亡,警方通過查閱死者的電腦和手機立哑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門夜惭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铛绰,你說我怎么就攤上這事诈茧。” “怎么了捂掰?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵敢会,是天一觀的道長。 經(jīng)常有香客問我这嚣,道長鸥昏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任姐帚,我火速辦了婚禮吏垮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己膳汪,他們只是感情好唯蝶,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遗嗽,像睡著了一般粘我。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上媳谁,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天涂滴,我揣著相機與錄音,去河邊找鬼晴音。 笑死柔纵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锤躁。 我是一名探鬼主播搁料,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼系羞!你這毒婦竟也來了郭计?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤椒振,失蹤者是張志新(化名)和其女友劉穎昭伸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澎迎,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡庐杨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夹供。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灵份。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哮洽,靈堂內(nèi)的尸體忽然破棺而出填渠,到底是詐尸還是另有隱情,我是刑警寧澤鸟辅,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布氛什,位于F島的核電站,受9級特大地震影響匪凉,放射性物質(zhì)發(fā)生泄漏屉更。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一洒缀、第九天 我趴在偏房一處隱蔽的房頂上張望瑰谜。 院中可真熱鬧欺冀,春花似錦、人聲如沸萨脑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渤早。三九已至职车,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹊杖,已是汗流浹背悴灵。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骂蓖,地道東北人积瞒。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像登下,于是被迫代替她去往敵國和親茫孔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計模式匯總 一被芳、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用缰贝、多...
    MinoyJet閱讀 3,948評論 1 15
  • 設(shè)計模式基本原則 開放-封閉原則(OCP),是說軟件實體(類畔濒、模塊剩晴、函數(shù)等等)應(yīng)該可以拓展,但是不可修改侵状。開-閉原...
    西山薄涼閱讀 3,798評論 3 14
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法赞弥,類相關(guān)的語法,內(nèi)部類的語法壹将,繼承相關(guān)的語法嗤攻,異常的語法毛嫉,線程的語...
    子非魚_t_閱讀 31,643評論 18 399
  • 誰能知道說出這兩個字的人 內(nèi)心當(dāng)時是一種什么心情 面對一個應(yīng)該恨一輩子的人 這個人 欺騙了我的人生 改變了我的未來...
    浪漫無云閱讀 374評論 0 0
  • 大家認為各種的動物難畫诽俯,橢圓形,加上不同形狀的耳朵承粤,和動物本身的特點暴区,比如熊貓的黑眼圈,考拉的大耳朵辛臊,蝸牛的長長眼...
    影子倒了閱讀 663評論 3 3