抽象工廠模式:通常由工廠方法模式來實(shí)現(xiàn)。但一個(gè)工廠中往往含有多個(gè)工廠方法生成一系列的產(chǎn)品。這個(gè)模式強(qiáng)調(diào)的是客戶代碼一次保證只使用一個(gè)系列的產(chǎn)品。當(dāng)要切換為另一個(gè)系列的產(chǎn)品,換一個(gè)工廠類即可。
原型模式:工廠方法的最大缺點(diǎn)就是,對(duì)應(yīng)一個(gè)繼承體系的產(chǎn)品類,要有一個(gè)同樣復(fù)雜的工廠類的繼承體系。我們可以把工廠類中的工廠方法放到產(chǎn)品類自身之中嗎?如果這樣的話,就可以將兩個(gè)繼承體系為一個(gè)。這也就是原型模式的思想,原型模式中的工廠方法為clone,它會(huì)返回一個(gè)拷貝(可以是淺拷貝,也可以是深拷貝,由設(shè)計(jì)者決定)。為了保證用戶代碼中到時(shí)可以通過指針調(diào)用clone來動(dòng)態(tài)綁定地生成所需的具體的類。這些原型對(duì)象必須事先構(gòu)造好。
原型模式想對(duì)工廠方法模式的另一個(gè)好處是,拷貝的效率一般對(duì)構(gòu)造的效率要高。