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