詳解工廠設計模式

2021-10-08 19:35:18 字數 2018 閱讀 8362

先來說說設計模式的分類,主要分為以下大類:

建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。

舉例如下:(我們舉乙個傳送郵件和簡訊的例子)

//建立二者的共同介面:

public

inte***ce

sender

//建立實現類:

public

class

mailsender

implements

sender

}public

class

smssender

implements

sender

}//建工廠類:

public

class

sendfactory

elseif(

"sms"

.equals

(type)

)else}}

//測試:

public

class

factorytest

} 輸出:this is sms sender!

是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。

將上面的**做下修改,改動下sendfactory類就行,如下:

class

sendfactory

public sender producesms()

}//測試:

public

class

factorytest

} 輸出:this is mailsender!

將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。

public

class

sendfactory

public

static sender producesms()

}public

class

factorytest

} 輸出:this is mailsender!

總體來說,工廠模式適合:凡是出現了大量的產品需要建立,並且具有共同的介面時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字串有誤,不能正確建立物件,第三種相對於第二種,不需要例項化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。

工廠方法模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。

public

inte***ce

sender

兩個實現類:

public

class

mailsender

implements

sender

}public

class

smssender

implements

sender

}public

inte***ce

provider

兩個工廠類:

public

class

sendmailfactory

implements

provider

}public

class

sendsmsfactory

implements

provider

}//測試:

public

class

test

}

其實這個模式的好處就是,如果你現在想增加乙個功能:發及時資訊,則只需做乙個實現類,實現sender介面,同時做乙個工廠類,實現provider介面,就ok了,無需去改動現成的**。這樣做,拓展性較好!

設計模式詳解 工廠模式(三)

本篇文章介紹一種設計模式 工廠模式。工廠模式是用來封裝物件的建立,減少應用程式和具體類之間的依賴,促進松耦合。根據工廠模式的應用特性,一共分為三種子模式 簡單工廠模式,工廠方法模式和抽象工廠模式。本篇文章主要介紹抽象工廠模式。本篇文章內容參考抽象工廠模式,原 從頭學習設計模式 四 抽象工廠模式。1....

Java設計模式之工廠模式詳解

在網上也看了很多關於工場模式的文章,但都沒說出重點,為什麼要採用工場模式,有的說為了避免修改方便,有的為了初始化方便。通過該文章得知 在這種情況下,可有工廠模式。也就是客戶端只需關注介面便可以建立物件,不用再關心其具體實現。抽象工廠模式 參考鏈結 避免修改工廠,在工廠模式基礎上再增加乙個介面prov...

設計模式詳解(二) 抽象工廠模式

前面介紹了簡單工廠模式和工廠方法模式。但是這兩種模式對應的工廠結構過於單一 乙個工廠只能生產一種產品 不適應與一些複雜的工廠等級結構,強行使用會導致工廠類的職責過於繁重,違反單一職責原則。因此我們推出抽象工廠模式。a b工廠分別生產聯想和戴爾品牌的筆記本,其元件包括主機板 螢幕 cpu 電源等,為了...