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