這個模式的定義:
定義一個用於創建物件的介面, 讓子類別決定要實例化哪一個類別. 工廠方法讓一個類別的實例化遞延到其子類別.
Define an interface for creating an object, but let subclasses decide wihich class to instantiate. Factory Method lets a class defer instantiation to subclasses.
從上段語意摘要出的兩個重點:
1. 創建物件的介面
2. 讓一個類別的實例化遞延到其子類別
工廠方法非常有用也常常被實用, 來看看下圖所示:
工廠的目的是用來產生產品, 產品則是服務客戶. Creator通常是一個抽象, 他可以對相關的具象類別產生約束力. 來看看下面的代碼範例:
這是一個非常簡單的範例, 一個IDbConnectionFactory抽象包含了CreateConnection方法的簽章, 這個方法會對其相關的具象類別產生約束性, 良好的設計可以提高內聚力. 從範例可以非常清楚的看出相關的具象類別用途只用來產出DbConnection的資料庫連線物件.