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

資訊專欄INFORMATION COLUMN

JS設計模式-工廠模式

sarva / 823人閱讀

摘要:工廠模式是最常用的實例化對象模式,是用工廠方法代替操作的一種模式原文鏈接簡單工廠模式優點能解決多個相似的問題缺點不能識別對象的類型工廠模式是為了解決多個類似對象聲明問題,也就是重復實例化對象的問題復雜工廠模式將其成員對象的實例化推遲到子類中

工廠模式是最常用的實例化對象模式,是用工廠方法代替new操作的一種模式

原文鏈接

簡單工廠模式

優點:能解決多個相似的問題

缺點:不能識別對象的類型

function Factory(name,age,sex){
    let person = {};
    person.name = name;
    person.age = age;
    person.sex = sex;
    person.say = function(){
        return this.name;
    };
    return person;
}

let tom = new Factory("Tom","10","male");
let jerry = new Factory("Jerry","20","female");

工廠模式是為了解決多個類似對象聲明問題,也就是重復實例化對象的問題

復雜工廠模式

將其成員對象的實例化推遲到子類中,子類可以重寫父類接口方法以便創建時指定獨自的對象類型
父類只對創建過程中的一般性問題進行處理,子類繼承,但子類之間相互獨立,具體業務再各自實現

父類變為抽象類,不能被實例

//工廠構造函數
function Factory(name){
    this.name = name;
    this.say = function(){
       return this.name;
    }
}
Factory.prototype = {
    constructor: Factory,
    createFactory: function(){
        throw new Error("父類抽象類無法直接調用,需要子類重寫");
    }
}

//原型繼承
function extend(sub,sup){
    //定義空函數
    let F= function(){};
    //空函數原型為父類原型
    F.prototype = sup.prototype;
    //實例化空函數傳遞給子類原型
    sub.prototype = new F();
    //使子類構造器指向自身
    sub.prototype.constructor = sub;
    //保存父類原型
    sub.sup = sup.prototyp;
    //檢測父類原型為父類自身
    if(sup.prototype.constructor === Object.prototype.constructor){
        sup.prototype.constructor = sup;
    }
}

function Person(name){
    this.name = name;
    Factory.call(this,name);
} 

extend(Person,Factory);

Person.prototype.createFactory = function(){
    switch(this.name){
        case "Tom": return {name: "Tom", age: 10, sex: "male"};
        case "Jerry": return {name: "Jerry", age: 20, sex: "female"};
        default : return {};
    }
}

let Tom = new Person("Tom");
let tom1 = Tom.createFactory();

這樣的好處是通用方法寫在工廠函數中,不需要重復實現,不同個性化代碼在子類中實現

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

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

相關文章

  • JS 設計模式 六(工廠模式

    摘要:首先吧之前的代碼打包成一個新的設計模式公用代碼工廠模式要點工廠接口是工廠方法模式的核心,與調用者直接交互用來提供產品。適用場景在任何需要生成復雜對象的地方,都可以使用工廠方法模式。 工廠模式 之前講了接口,封裝,繼承,單例等,現在就需要應用這些特性來完成一些設計模式了。首先吧之前的代碼打包成一個新的JS DesignPattern.js // 設計模式公用代碼 exports...

    raoyi 評論0 收藏0
  • JS 工廠模式

    摘要:工廠模式定義一個用于創建對象的接口,這個接口由子類決定實例化哪一個類。實現一個簡單的實現,使用如果使用對象屬性來實現以下例子中的工廠方法接受在運行時以字符串形式指定的類型,然后創建并返回所請求類型的對象。 1. 簡介 工廠模式的目的是為了創建對象,它通常在類或者類的靜態方法中實現,具有以下目標: 當創建相似對象時執行重復操作 當編譯時不知道具體類型的情況下,為工廠客戶提供一個創建對象...

    zhangke3016 評論0 收藏0
  • 一天一個設計模式JS實現——工廠模式

    摘要:參考文章深入理解三種工廠模式工廠模式,工廠方法模式,抽象工廠模式詳解工廠模式是中最常用的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。 參考文章:深入理解java三種工廠模式工廠模式,工廠方法模式,抽象工廠模式 詳解 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的...

    Muninn 評論0 收藏0
  • JS 抽象工廠模式

    摘要:簡介抽象工廠模式就是通過類的抽象使得業務適用于一個產品類簇的創建,而不負責某一類產品的實例。通過抽象工廠,就可以創建某個類簇的產品,并且也可以通過來檢查產品的類別,也具備該類簇所必備的方法。 0. 簡介 抽象工廠模式(Abstract Factory)就是通過類的抽象使得業務適用于一個產品類簇的創建,而不負責某一類產品的實例。 JS中是沒有直接的抽象類的,abstract是個保留字,但...

    RiverLi 評論0 收藏0
  • js常用設計模式實現(二)工廠模式和抽象工廠模式

    摘要:抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創建多個產品族中的產品對象。前邊的兩個都是直接生產實例的,開始以為抽象工廠也是但是后來發現抽象工廠更像是生產工廠,其實抽象工廠其實是實現子類繼承父類的方法。 創建型模式 創建型模式是對一個類的實例化過程進行了抽象,把對象的創建和對象的使用進行了分離 上一篇介紹了下單例模式,這一篇介紹一下工廠模式和抽象工廠模式,...

    meteor199 評論0 收藏0
  • JS 設計模式 七(抽象工廠模式

    摘要:抽象工廠模式抽象工廠是工廠模式的升級版,他用來創建一組相關或者相互依賴的對象。代碼抽象工廠模式抽象工廠的優點抽象工廠模式除了具有工廠方法模式的優點外,最主要的優點就是可以在類的內部對產品族進行約束。 抽象工廠模式 抽象工廠是工廠模式的升級版,他用來創建一組相關或者相互依賴的對象。上節學習了工廠模式,類的創建依賴工廠類,程序需要擴展時,我們必須創建新的工廠類。工廠類是用來生產產品的,那我...

    FuisonDesign 評論0 收藏0

發表評論

0條評論

sarva

|高級講師

TA的文章

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