建立型模式 工廠模式

2021-10-24 18:44:34 字數 2938 閱讀 4520

意圖:定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。

主要解決:主要解決介面選擇的問題。

何時使用:我們明確地計畫不同條件下建立不同例項時。

如何解決:讓其子類實現工廠介面,返回的也是乙個抽象的產品。

關鍵**:建立過程在其子類執行。

應用例項: 1、您需要一輛汽車,可以直接從工廠裡面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裡面的具體實現。 2、hibernate 換資料庫只需換方言和驅動就可以。

優點: 1、乙個呼叫者想建立乙個物件,只要知道其名稱就可以了。 2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。 3、遮蔽產品的具體實現,呼叫者只關心產品的介面。

缺點:每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。

使用場景: 1、日誌記錄器:記錄可能記錄到本地硬碟、系統事件、遠端伺服器等,使用者可以選擇記錄日誌到什麼地方。 2、資料庫訪問,當使用者不知道最後系統採用哪一類資料庫,以及資料庫可能有變化時。 3、設計乙個連線伺服器的框架,需要三個協議,「pop3」、「imap」、「http」,可以把這三個作為產品類,共同實現乙個介面。

注意事項:作為一種建立類模式,在任何需要生成複雜物件的地方,都可以使用工廠方法模式。有一點需要注意的地方就是複雜物件適合使用工廠模式,而簡單物件,特別是只需要通過 new 就可以完成建立的物件,無需使用工廠模式。如果使用工廠模式,就需要引入乙個工廠類,會增加系統的複雜度。

一句話概括工廠模式

簡單工廠:乙個工廠類,乙個產品抽象類。

工廠方法:多個工廠類,乙個產品抽象類。

抽象工廠:多個工廠類,多個產品抽象類。

二、生活中的工廠模式

簡單工廠類:乙個麥當勞店,可以生產多種漢堡。

工廠方法類:乙個麥當勞店,可以生產多種漢堡。乙個肯德基店,也可以生產多種漢堡。

抽象工廠類:百勝餐飲集團下有肯德基和百事公司,肯德基生產漢堡,百事公司生成百事可樂。

簡單工廠

package main

import

"fmt"

// 簡單工廠

type personapi inte***ce

func

newpersonapi

(str string

)personapi

}else

if str ==

"en"

}else

}type chinese struct

func

(*chinese)

say(name string

)string

type english struct

func

(*english)

say(name string

)string

func

main()

工廠方法模式

operate.go

package factorypattern

// 具體的實現

type operate inte***ce

// 基本的資料結構

type operatebase struct

func (o *operatebase)setleft(left int)

func (o *operatebase)setright(right int)

operatefactory.go

package factorypattern

// 工廠

type operatefactory inte***ce

addoperatefactory.go

package factorypattern

type addoperatefactory struct

func (a *addoperatefactory) result()int

func (a *addoperatefactory) create()operate}

}

suboperatefactory.go

package factorypattern

type suboperatefactory struct

func (s *suboperatefactory) result()int

func (s *suboperatefactory) create()operate}

}

main.go

package main

import (

"designpattern/factorypattern"

"fmt"

)func main()

sub = &factorypattern.suboperatefactory{}

operate := sub.create()

operate.setleft(10)

operate.setright(20)

fmt.println(operate.result())

}

建立型模式 工廠模式

1.什麼是工廠模式 工廠模式提供了建立物件的最佳方式,在建立物件時不會對客戶端暴露建立邏輯,並且通過乙個共同的介面來指向建立的物件。2.使用場景 在不同的條件下建立不同的例項,比如spring使用了工廠模式管理bean的建立 生命週期以及bean與bean之間的關係。3.如何實現 定義乙個建立物件的...

建立型模式 工廠模式

建立型模式 工廠模式 工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 符合 開放 封閉 原則 通過新增 的方式,不是通過修改 的方式完成功能的增強。工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,...

建立型模式(工廠模式)

目錄現在對該系統進行修改,不再設計乙個按鈕工廠類來統一負責所有產品的建立,而是將具體按鈕的建立過程交給專門的工廠子類去完成,我們先定義乙個抽象的按鈕工廠類,再定義具體的工廠類來生成圓形按鈕 矩形按鈕 菱形按鈕等,它們實現在抽象按鈕工廠類中定義的方法。這種抽象化的結果使這種結構可以在不修改具體工廠類的...