freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

軟件的可維護性與可復用性(編輯修改稿)

2025-05-10 02:04 本頁面
 

【文章內容簡介】 //創(chuàng)建食肉動物publicabstractCarnivoreCreateCarnivore()。}//具體工廠1classAfricaFactory:ContinentFactory{publicoverrideHerbivoreCreateHerbivore(){//返回牛羚returnnewWildebeest()。}publicoverrideCarnivoreCreateCarnivore(){//返回獅子returnnewLion()。}}//具體工廠2classAmericaFactory:ContinentFactory{publicoverrideHerbivoreCreateHerbivore(){//返回野牛returnnewBison()。}publicoverrideCarnivoreCreateCarnivore(){//返回狼returnnewWolf()。}}//抽象產品AabstractclassHerbivore{}//抽象產品BabstractclassCarnivore{//交互關系,食肉動物可以吃掉食草動物publicabstractvoidEat(Herbivoreh)。}//具體產品A1classWildebeest:Herbivore{}//具體產品B1classLion:Carnivore{publicoverridevoidEat(Herbivoreh){//吃掉牛羚(().Name+eats+().Name)。}}//具體產品A2classBison:Herbivore{}//具體產品B2classWolf:Carnivore{publicoverridevoidEat(Herbivoreh){//吃掉野牛(().Name+eats+().Name)。}}//客戶端classAnimalWorld{privateHerbivore_herbivore。privateCarnivore_carnivore。//通過構造器傳入具體工廠publicAnimalWorld(ContinentFactoryfactory){_carnivore=()。_herbivore=()。}publicvoidRunFoodChain(){(_herbivore)。}}}輸出的結果為:Lion eats WildebeestWolf eats Bison什么情況下使用抽象工廠:文獻【GOF95】指出,在以下情況下應當考慮使用抽象工廠模式:、組合和表達的細節(jié),這對于所有形態(tài)的工廠模式都是重要的。這個系統的產品有多于一個產品族,而系統只消費其中某一個族的產品(上面這一條叫做抽象工廠模式的原始用意。)同屬于同一個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。系統提供一個產品類的庫,所有的產品以同樣的接口實現,從而使客戶端不依賴于實現。實際項目舉例現在需要創(chuàng)建分屬于不同操作系統的視窗構件。比如命令按鈕(Button)與文本框(Text)等都是視窗構件,在UNIX系統的視窗環(huán)境和Windows操作系統的視窗環(huán)境中,這兩個構件有不同的本地體現,它們的細節(jié)也有所不同。在每一個操作系統中,都有一個視窗構件組成構件家族。在這里就是Button和Text組成的產品族。而每一個視窗構件都構成自己的等級結構,由一個抽象角色給出抽象的功能描述,而由具體子類給出不同操作系統的具體實現,如下圖所示。可以發(fā)現在上面的產品類圖中,有兩個產品的等級結構,分別是Button等級結構和Text等級結構、同時有兩個產品族,也就是UNIX產品族和Windows產品族。UNIX產品族由UnixButton和UnixText產品組成;而Windows產品族由WinButton和WinText產品構成。系統對產品對象的創(chuàng)建需求由一個工廠的等級結構滿足,其中有兩個具體工廠角色,即UnixFactory和WinFactory。UnixFactory對象負責創(chuàng)建Unix產品族中的產品,而WinFactory對象負責創(chuàng)建Windows產品族中的產品。這就是抽象工廠模式的應用,抽象工廠模式的解決方案如下圖所示。顯然,一個系統只能夠在某一個操作系統的視窗環(huán)境下運行,而不能夠同時在不同的操作系統上運行。所以,系統實際上只能消費屬于同一個產品族的產品。這個案例實際上也正是抽象工廠模式的起源。實現的代碼如下。Project code using Abstract Factory in C//抽象工廠起源案例usingSystem。namespace{classMainApp{publicstaticvoidMain(){//創(chuàng)建Unix使用環(huán)境OSFactoryunix=newUnixFactory()。Clientclient=newClient(unix)。()。//創(chuàng)建Windows使用環(huán)境OSFactorywindows=newWinFactory()。client=newClient(windows)。()。//等待用戶輸入()。}}//抽象工廠abstractclassOSFactory{//創(chuàng)建按鈕構件publicabstractButtonCreateButton()。//創(chuàng)建文本框構件publicabstractTextCreateText()。}//具體工廠1classUnixFactory:OSFactory{publicoverrideButtonCreateButton(){//返回Unix下的ButtonreturnnewUnixButton()。}publicoverrideTextCreateText(){//返回Unix下的TextreturnnewUnixText()。}}//具體工廠2classWinFactory:OSFactory{publicoverrideButtonCreateButton(){//返回Windows下的ButtonreturnnewWinButton()。}publicoverrideTextCreateText(){//返回Winodws下的TextreturnnewWinText()。}}//抽象產品AabstractclassButton{}//抽象產品BabstractclassText{//交互關系publicabstractvoidInteract(Buttonb)。}//具體產品A1classUnixButton:Button{}//具體產品B1classUnixText:Text{publicoverridevoidInteract(Buttonb){(().Name+interactwith+().Name)。}}//具體產品A2classWinButton:Button{}//具體產品B2classWinText:Text{p
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1