|
概述
在軟件系統(tǒng)中,經(jīng)常面臨著“某個(gè)對(duì)象”的創(chuàng)建工作,由于需求的變化,這個(gè)對(duì)象的具體實(shí)現(xiàn)經(jīng)常面臨著劇烈的變化,但是它卻擁有比較穩(wěn)定的接口。如何應(yīng)對(duì)這種變化?提供一種封裝機(jī)制來隔離出“這個(gè)易變對(duì)象”的變化,從而保持系統(tǒng)中“其它依賴該對(duì)象的對(duì)象”不隨著需求的改變而改變?這就是要說的Factory Method模式了。
意圖
定義一個(gè)用戶創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。Factory Method使一個(gè)類的實(shí)例化延遲到其子類。
結(jié)構(gòu)圖
生活中的例子
工廠方法定義一個(gè)用于創(chuàng)建對(duì)象的接口,但是讓子類決定實(shí)例化哪個(gè)類。壓注成型演示了這種模式。塑料玩具制造商加工塑料粉,將塑料注入到希望形狀的模具中。玩具的類別(車,人物等等)是由模具決定的。
工廠方法解說
在工廠方法模式中,核心的工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工作交給子類去做。這個(gè)核心類僅僅負(fù)責(zé)給出具體工廠必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類被實(shí)例化這種細(xì)節(jié)。這使得工廠方法模式可以允許系統(tǒng)在不修改工廠角色的情況下引進(jìn)新產(chǎn)品。在Factory Method模式中,工廠類與產(chǎn)品類往往具有平行的等級(jí)結(jié)構(gòu),它們之間一一對(duì)應(yīng)。
現(xiàn)在我們考慮一個(gè)日志記錄的例子(這里我們只是為了說明Factory Method模式,實(shí)際項(xiàng)目中的日志記錄不會(huì)這么去做,也要比這復(fù)雜一些)。假定我們要設(shè)計(jì)日志記錄的類,支持記錄的方法有FileLog和EventLog兩種方式。在這里我們先不談設(shè)計(jì)模式,那么這個(gè)日志記錄的類就很好實(shí)現(xiàn)了:
1

2

3

4

5



6

7

8



9

10

11

12

13



14

15

16

17

18



19

20



21

22

23

24

25

26

27

28

29

30

31

32

33

34

NET技術(shù):.NET設(shè)計(jì)模式:工廠方法模式(Factory Method),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。