深刻淺出設計模式 - 建立型設計模式 - 1.簡單工廠模式

引言:

最近在學習設計模式,因而仔細研究了一下,決定整理成文章分享出來,對於沒有設計模式的小白,再合適不過了,看招吧!javascript

盜個圖片~ ~ ~~java

cmd-markdown-logo

什麼是設計模式:

我理解的設計模式,就是一種編程的風格和規範,這個概念最先是出如今建築學中,認爲設計風格是一種美學,那咱們就把設計模式,當成是編程的美學吧!編程

設計模式分類:

  • 建立型設計模式
  • 結構型設計模式
  • 行爲型設計模式
  • 技巧型設計模式
  • 結構型設計模式

本小節主要講解---建立型設計模式 --- 持續更新設計模式

簡單工廠模式

簡介:簡單工廠模式,又叫靜態工廠方法,由一個工廠對象決定建立某一種產品對象類的實例,主要用來建立同一類對象markdown

其實建立型設計模式,除了簡單工廠模式還有, 工廠方法模式,抽象工廠模式,建造者模式,原型模式,單例模式,後續會更新!!!學習

優勢 ~ 百度百科:

工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的信息,決定究竟應該建立哪一個具體類的對象.經過使用工廠類,外界能夠從直接建立具體產品對象的尷尬局面擺脫出來,僅僅須要負責「消費」對象就能夠了。而沒必要管這些對象究竟如何建立及如何組織的.明確了各自的職責和權利,有利於整個軟件體系結構的優化。優化

缺點 ~ 百度百科:

因爲工廠類集中了全部實例的建立邏輯,違反了高內聚責任分配原則,將所有建立邏輯集中到了一個工廠類中;它所能建立的類只能是事先考慮到的,若是須要添加新的類,則就須要改變工廠類了。ui

當系統中的具體產品類不斷增多時候,可能會出現要求工廠類根據不一樣條件建立不一樣實例的需求.這種對條件的判斷和對具體產品類型的判斷交錯在一塊兒,很難避免模塊功能的蔓延,對系統的維護和擴展很是不利; 這些缺點在工廠方法模式中獲得了必定的克服。this

我的闡述:

其實,我以爲,簡單工廠模式就是把全部的和某一種產品有關的類,對象,方法,整合到一塊兒,而後經過傳遞的不一樣參數,執行不一樣的邏輯spa

代碼用例:

// 籃球類
let basketball = function(){
    this.intro = '籃球類'
}
basketball.prototype ={
    getMember:function(){
       console.log('每一個球隊要五個隊員!')  
       // 其實主要是想表述籃球的邏輯,並非三種球都是重複的console
    },
    getBallSize:function(){
        console.log('籃球很大')
    }
}

// 足球類
let football = function(){
    this.intro = '足球類'
}
basketball.prototype ={
    getMember:function(){
       console.log('每一個球隊要好幾個隊員!')
    },
    getBallSize:function(){
        console.log('足球也很大')
    }
}

// 網球類
let tennis = function(){
    this.intro = '網球類'
}
basketball.prototype ={
    getMember:function(){
       console.log('每一個球隊要好幾個隊員!')
    },
    getBallSize:function(){
        console.log('網球也很大')
    }
}

// 如上圖,咱們建立了三個類,

// 可是,若是咱們想調用他們的時候,須要new出來一個個的實例,
// 而工廠模式,就是把上面全部相關的,整合到一塊兒,
// 這樣作的好處就是能夠經過傳遞的信息,建立出咱們須要的對象

let factory = function(name){
    switch(name){
        case 'basketball'
            return new basketball()
        case 'football'
            return new football()
        case 'tennis'
            return new tennis()
    }
}



// 調用

var foot = factory(basketball)
console.log(foot)
console.log(foot.getMember)


// 由於簡單工廠模式的核心就是建立對象,和整合相同代碼部分
// 代碼也能夠這樣寫
let factory = function(name){
    let obj = new Object()
    if(name == 'basketball'){
         obj.intro = '籃球類'
        obj.getMember = function(){
           console.log('每一個球隊要五個隊員!')  // 其實主要是想表述籃球的邏輯
        }
        obj.getBallSize=function(){
            console.log('籃球很大')
        }
    }
    if(name == 'football'){
         obj.intro = '籃球類'
        obj.getMember = function(){
           console.log('每一個球隊要五個隊員!')    // 其實主要是想表述足球的邏輯
        }
        obj.getBallSize=function(){
            console.log('足球很大')
        }
    }
    
     if(name == 'tennis'){
         obj.intro = '網球'
        obj.getMember = function(){
           console.log('每一個球隊要五個隊員!')    // 其實主要是想表述足球的邏輯
        }
        obj.getBallSize=function(){
            console.log('網球很大')
        }
    }
    
    return obj
}
複製代碼

總結,簡單工廠模式

上述主要講了兩種設計簡單工廠模式的方法,一種是經過類的實例化,一種是經過建立對象,而後返回。可是不管是簡單工廠模式、工廠模式仍是抽象工廠模式,它們本質上都是將不變的部分提取出來,將可變的部分留做接口,以達到最大程度上的複用。

相關文章
相關標籤/搜索