創建(construct)某類物件的程式碼如果經常變動,把它封裝到另一個物件A,由物件A負責創建該類物件,物件A就稱為工廠(factory)。
有的人認為此非一種design pattern,而是一種良好編程習慣。
善用多型,將創建物件的邏輯由factory負責,client只需使用創建出來的物件即可。
factory內含太多創建邏輯,責任非常重大。
若實體被創建的物件有不同介面型別時,factory要判斷何時要產生哪種物件,這種判斷會導至判斷邏輯和具體物件類別混在一起,擴充時較困難。
OCP支援不足,只有client享受到OCP的優點。
client相依於具體factory。