問題:現有兩類產品 1-ram,2--cpu,現在要生成具體的產品
macram,maccpu和winram,wincpu.
**如下:
/***a:abstract
*c:concrete
*//** 定義抽象產品ram的類 aprototyperam
* 同時他也是抽象工廠
*/abstract class aprototyperam implements cloneable
catch(clonenotsupportedexception e)
return o;}}
/** 定義抽象產品ram的類aprototypeproductcpu
* 同時他也是抽象工廠
*/abstract class aprototypecpu implements cloneable
catch(clonenotsupportedexception e)
return o;}}
/** 定義具體產品macram的類cprototypemacram
* 同時他也是具體工廠
*/class cprototypemacram extends aprototyperam
}/** 定義具體產品winram的類cprototypewinram
* 同時他也是具體工廠
*/class cprototypewinram extends aprototyperam
}/** 定義具體產品maccpu的類cprototypemaccpu
* 同時他也是具體工廠
*/class cprototypemaccpu extends aprototypecpu
}/** 定義具體產品wincpu的類cprototypewincpu
* 同時他也是具體工廠
*/class cprototypewincpu extends aprototypecpu
}/** 客戶端,使用cprototyperam和cprototypecpu生成如下產品
* macram,maccpu,winram,wincpu
*/public class prototype
}通過上面**,我們可以清楚地看到,用prototype模式實現工廠模式更為簡單,如果再配上原型管理器的話,那麼prototype模式則會變得更為靈活,限於篇幅,本文沒有講到原型管理器,有興趣的朋友可以參看後文列出的參考文獻。但同時,我們也發現,使用原形模式時,有乙個不足之處,即在客戶端**裡,我們必須顯示進行型別轉換,這樣可能導致錯誤。為了改正這一點,我想,我們可以使用真正的工廠模式將prototype模式再封裝一遍。對工廠模式的這項功能,恐怕,prototype原形模式就無能為力了。
總之,工廠模式和原形模式雖然在引入目的上不同,但在實現上,原形模式可以實現工廠模式同樣的功能。但讀者也不要因為這樣,而將兩者混為一體,因為,反過來,在將原形模式作為生成本身拷貝的這項功能使用時,工廠模式根本無法取代它。
Factory模式(工廠模式)
假設有如下的場景 賣pizza的,可以有很多種pizza cheesepizza,greekpizza,pepperonipizza 我們該如何處理它呢,當然我們可以宣告乙個類,類中建立每乙個種類的pizza。但是這樣有什麼問題嗎?我們沒有把需要改變的部分剝離出來。軟體設計的乙個原則就是 是易於擴充...
factory工廠模式
1.factory模式 兩個重要的功能 1 定義建立物件的介面,封裝了物件的建立 2 使得具體化類的工作延遲到了子類中。factory模式僅僅侷限於一類類 就是說product是一類,有乙個共同的基類 如果我們要為不同類的類提供 乙個物件建立的介面,那就要用abstractfactory了。我們經常...
設計模式 Factory
有一定程式設計經驗的xdjm對工廠方法模式肯定不會陌生了,曾經做過乙個遊戲大廳,那會的qt還沒有qml這個東東,為了能夠動態的載入頁面以及更加方便的除錯。每乙個window都是使用乙個xml去定義,裡面按照樹狀結構定義了各種型別的控制項。每個控制項都是widget的父類,window在載入介面時顯然...