1 前言
幾乎在每個面向對象語言的應用程序中都能看到工廠方法。工廠方法是抽象工廠方法的組成部分。對象工廠與生產有形產品的真實工廠類似,比方說:你讓工廠給你生產產品,你給他們發送一個“生產產品”的消息。工廠就會按照相應的“生產產品”的協議,啟動器生產線。過程結束後,就會返回所生產的特定類型的產品。我們把“生產”這個詞稱作工廠方法,因為他是命令生產者(工廠)得到想要的產品的方法。
今天我們就來學習一下工廠方法。
2 詳述
2.1 說明
工廠方法也成為虛擬構造器(virtual constructor)。它適用於這種情況:一個類無法預期需要生成哪個類的對象,想讓其子類來制定所生成的對象。
抽象的Product(產品)定義了工廠方法創建對象的接口。ConcreteProduct實現了Product接口。Creator定義了返回Product對象的工廠方法。它也可以為工廠方法頂一個默認實現,返回默認的ConcreteProduct對象。Creator的其他操作可以調用此工廠方法創建Product對象。ConcreteCreator是Creator的子類。它重載了工廠方法,以返回ConcreteProduct的實例。
工廠方法模式:定義創建對象的接口,讓子類決定實例化哪一個類。工廠方法使得一個類的實例化延遲到其子類。
2.2 何時使用
(1)編譯時無法確定預期要創建的對象的類;
(2)類想讓其子類決定運行時創建什麼;
(3)類有若干輔助類為其子類,而你想將返回哪個子類這一信息局部化。
工廠方法模式讓客戶程序可以要求由工廠方法創建的對象擁有一組共同的行為。所以往類層次結構中引入新的具體產品並不需要修改客戶端代碼,因為返回的任何具體對象的接口都跟客戶端一直在用的從前的接口相同。
工廠設計模式是面向對象軟件設計中應用非常普遍的設計模式。工廠方法從代碼中消除了對應用程序特有的耦合。代碼只需要處理Product抽象接口。所以同一代碼得以復用,在應用程序中與用戶定義的任何ConcreteProduct類一起工作。
3 結語
以上是所有內容,希望對大家有所幫助。