請教工廠方法的一個應用問題

noizz發表於2004-11-23
譬如說我要生產一組產品,這組產品有一些共性,於是用一個
ProductMgr來管理共性的東西
當遇到專有的東西時
用一個工廠方法來處理
if( needSpecialProcess){
ProductCommand command1 = ProductFactory.getFactory(productId);
command1.createProduct();
}
這些沒有問題。
但是,後來發現幾種command裡面又有一些共性的操作。這時該怎麼設計呢?
現在有方案
1)沿用原來的結構,不改變。這樣就是每種command都要做一些相同的操作。
2)將共性的操作抽取到一個公共方法,如 function.doBeforeCreate(ProductCommand command)。每個Command裡再去呼叫這些方法。
3) 將共性的操作抽取到一個新類。
if( needSpecialProcess){
new CommonCommand().createProduct();
}
在CommandCommand裡,先處理共性的操作。然後再呼叫工廠方法處理專有操作。

要考慮效率問題,又要兼顧結構。該怎麼選呢?或者有更好的方案?

相關文章