意圖
定義一個(gè)用于創(chuàng)建對(duì)象的接口起胰,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi)分瘾。Factory Method使一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)
別名
虛構(gòu)造器(Virtual Constructor)
動(dòng)機(jī)
框架使用抽象類(lèi)定義和維護(hù)對(duì)象之間的關(guān)系榨馁。
適用性
- 當(dāng)一個(gè)類(lèi)不知道它所必須創(chuàng)建的對(duì)象的類(lèi)的時(shí)候具滴。
- 當(dāng)一個(gè)類(lèi)希望由它的子類(lèi)來(lái)指定它所創(chuàng)建的對(duì)象的時(shí)候。
- 當(dāng)類(lèi)將創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助子類(lèi)中的某一個(gè)癌刽,并且你希望哪一個(gè)幫助子類(lèi)是代理類(lèi)這一信息局部化的時(shí)候力图。
參與者
- Product ----定義工廠方法所創(chuàng)建的對(duì)象的接口
- ConcreteProduct ----實(shí)現(xiàn)Product接口
- Creator ----聲明工廠方法步绸,該方法返回一個(gè)Product類(lèi)型的對(duì)象
- ConcreteCreator ----重定義工廠方法以返回一個(gè)ConcreteProduct實(shí)例
協(xié)作
Creator依賴(lài)于它的子類(lèi)來(lái)定義工廠方法,所以它返回一個(gè)適當(dāng)?shù)腃oncreteProduct實(shí)例
效果
- 為子類(lèi)提供掛鉤(hook)
- 連接平行的類(lèi)層次