工廠模式和簡單工廠模式間最大的不同在於:
- 簡單工廠模式的物件生產,是透過一個統一的工廠,可以完成許多重覆的初始化動作。另一方面,當物件種類增加時,工廠就要修改。
- 工廠模式,也可以稱為工廠方法模式。就是把建立物件的方法,改為工廠,而去除對某一「物件種類」實體化的相依程度。
例如:
GetPizzaForCustomer(orderType) {
CreatePizza(orderType)
Bake()
Cut()
Pack()
}
如果我們將CreatePizza變成抽象的工廠方法,那麼實作這一個工廠方法就可以重覆利用GetPizzaForCustomer這個成熟且已經測試無誤的程序,只要將想要的Pizza種類實作在CreatePizza這個方法即可。如此即完成物件之間相依性的鬆綁。
如果不使用工廠方法,那麼作法可能就是用new XXXPizza或new OOOPizza,如此一來GetPizzaForCustomer對XXXPizza或OOOPizza都產生了相依性。
工廠方法符合開(CreatePizza可擴充修改)閉(GetPizzaForCustomer不必修改)原則。而各個工廠實作之間的干擾也降低。
- 所有工廠只負責生產物件。而判斷要生產何種物件的機制,就交給應用端去處理。
沒有留言:
張貼留言