設計模式(二) 工廠模式的學習和使用

2021-07-31 07:40:17 字數 1746 閱讀 6604

在工廠模式(factory pattern)中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用乙個共同的介面來指向新建立的物件。
意圖定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。解決型別主要解決介面選擇的問題。

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

應用例項您需要一輛汽車,可以直接從工廠裡面提貨,而不用去管這輛汽車是怎麼做出來的,以及這個汽車裡面的具體實現。

優點

1、乙個呼叫者想建立乙個物件,只要知道其名稱就可以了。

2、擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以。

3、遮蔽產品的具體實現,呼叫者只關心產品的介面。

缺點

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

使用場景

1、日誌記錄器:記錄可能記錄到本地硬碟、系統事件、遠端伺服器等,使用者可以選擇記錄日誌到什麼地方。

2、資料庫訪問,當使用者不知道最後系統採用哪一類資料庫,以及資料庫可能有變化時。

3、設計乙個連線伺服器的框架,需要三個協議,"pop3"、"imap"、"http",可以把這三個作為產品類,共同實現乙個介面。

關係圖

例項

//傳送介面

public

inte***ce

sender

//實現介面

public

class

mailsender

implements

sender

}//實現介面

public

class

smssender

implements

sender

}public

class

sendfactory else

if (type.equalsignorecase("smssender")) else

}}@test

public

void

test()

public

class

sendfactory

public sender producesms()

}@test

public

void

test()

public

class

sendfactory

public

static sender producesms()

}@test

public

void

test()

設計模式學習之簡單工廠模式和工廠模式

1 兩者之間的共同 都是建立shape介面,然後分別建立circle rectangle square這三個類,實現shape介面方法即可。不同之處在建立工廠類上。簡單工廠 只建立乙個工廠類 packagecn.zyy.design.mode.factory public class factory...

二 設計模式 工廠模式

一.傳統時以pizza類舉例,乙個抽象類pizza,由幾個pizza實現類實現,主餐廳看看客戶點什麼便生產,但是如果需要增加新的pizza品種,則要增加乙個新的實現類,然後主餐廳裡增加對邏輯的判斷,顯然,違背了開放關閉原則。所以 工廠模式為解決某些需要生產大量一批類的問題 二.簡單工廠模式 定義了乙...

設計模式(二)工廠模式

與 模式不同,生產模式隱藏過程,只關注結果 簡單工廠,工廠方法,抽象工廠 一,簡單工廠模式 public inte ce car public class aodi implements car public class baoma implements car public class facto...