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

正文內(nèi)容

淺析java常用的設(shè)計(jì)模式(編輯修改稿)

2024-07-27 06:51 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 nds Exception{ public BadFruitException(String msg){ super(msg)。 } } //測(cè)試類 public class Test{ FruitGardener gardener =new FruitGardener()。 try{ (grape)。 (apple)。 (strawberry)。 (banana)。 //拋出異常 }catch(BadFruitException e){ (dont39。t has this fruit.)。 } } 三個(gè)角色: 工廠類(Creator)角色:在客戶端的直接調(diào)用下創(chuàng)建產(chǎn)品對(duì)象 抽象產(chǎn)品角色:可以用一個(gè)接口或者一個(gè)抽象類實(shí)現(xiàn) 具體產(chǎn)品角色:工廠方法模式所創(chuàng)建的任何對(duì)象都是這個(gè)角色的實(shí)例 如果工廠方法總是循環(huán)使用同一個(gè)產(chǎn)品對(duì)象,那么這個(gè)工廠對(duì)象可以使用一個(gè)屬性來(lái)存儲(chǔ)這個(gè)產(chǎn)品對(duì)象。 每一次客戶端調(diào)用工廠方法時(shí),工廠方法總是提供這同一個(gè)對(duì)象。 如果工廠方法永遠(yuǎn)循環(huán)使用固定數(shù)目的一些產(chǎn)品對(duì)象,而且這些產(chǎn)品對(duì)象的數(shù)目并不大的話, 可以使用一些私有屬性存儲(chǔ)對(duì)這些產(chǎn)品對(duì)象的引用。比如:一個(gè)永遠(yuǎn)只提供一個(gè)產(chǎn)品對(duì)象的工廠對(duì)象 可以使用一個(gè)靜態(tài)變量存儲(chǔ)對(duì)這個(gè)產(chǎn)品對(duì)象的引用。 如果工廠方法使用數(shù)目不確定,或者數(shù)目較大的一些產(chǎn)品對(duì)象的話,使用屬性變量存儲(chǔ)對(duì)這些產(chǎn)品對(duì)象的引用就不方便了, 這時(shí)候 就應(yīng)當(dāng)使用聚集對(duì)象存儲(chǔ)對(duì)產(chǎn)品對(duì)象的引用。 其他模式。 單例模式:?jiǎn)卫J揭髥卫惖臉?gòu)造子是私有的,從而客戶端不能直接將之實(shí)例化,而必須通過(guò)這個(gè)靜態(tài)工廠方法將之實(shí)例化, 而且單例類自身是自己的工廠角色。單例類自己負(fù)責(zé)創(chuàng)建自身的實(shí)例 單例類使用一個(gè)靜態(tài)屬性存儲(chǔ)自己的唯一的實(shí)例,工廠方法永遠(yuǎn)僅提供這一個(gè)實(shí)例 多例模式:它是對(duì)單例模式的推廣,多例模式也禁止外界直接將之實(shí)例化,同時(shí)通過(guò)靜態(tài)工廠方法想外界提供循環(huán)使用的自身的實(shí)例, 多例模式可以有多個(gè)實(shí)例 多例模式具有一個(gè)聚集屬性,通過(guò)向這個(gè)聚集屬性登記已經(jīng)創(chuàng)建過(guò)的實(shí)例達(dá)到循環(huán)使用實(shí)例的目的, 它還擁有一個(gè)內(nèi)部狀態(tài),每一個(gè)內(nèi)部狀態(tài)都只有一個(gè)實(shí)例存在 根據(jù)外界傳入的參量,工廠方法可以查詢自己的登記聚集,如果具有這個(gè)狀態(tài)的實(shí)例已經(jīng)存在, 就直接將這個(gè)實(shí)例提供給外界:反之,就首先創(chuàng)建一個(gè)新的滿足要求的實(shí)例,將之登記到聚集中,然后再提供客戶端。 備忘錄模式:?jiǎn)卫J胶投嗬J绞褂靡粋€(gè)屬性或者聚集屬性來(lái)登記所創(chuàng)建的產(chǎn)品對(duì)象,一邊可以通過(guò)查詢這個(gè)屬性或者聚集屬性 找到并共享已經(jīng)創(chuàng)建了的產(chǎn)品對(duì)象,這就是備忘錄模式的應(yīng)用。 MVC模式:是更高層次上的架構(gòu)模式。 包括:合成模式、策略模式、觀察者模式、也有可能會(huì)包括裝飾模式、調(diào)停者模式、迭代子模式以及工廠方法模式等。 ****:如果系統(tǒng)需要有多個(gè)控制器參與這個(gè)過(guò)程的話,簡(jiǎn)單工廠模式就不適合了,應(yīng)當(dāng)考慮使用工廠方法模式。 簡(jiǎn)單工廠模式的優(yōu)點(diǎn)己缺點(diǎn) 優(yōu)點(diǎn):模式的核心是工廠類,這個(gè)類有必要的判斷邏輯,可以決定在什么時(shí)候創(chuàng)建哪一個(gè)產(chǎn)品類的實(shí)例。 而客戶端則可以免除直接創(chuàng)建產(chǎn)品對(duì)象的責(zé)任,而僅僅負(fù)責(zé)“消費(fèi)”產(chǎn)品。簡(jiǎn)單工廠模式通過(guò)這種做法實(shí)現(xiàn)了對(duì)責(zé)任的分割 缺點(diǎn):1)這個(gè)工廠類集中了所有的產(chǎn)品創(chuàng)建邏輯,形成一個(gè)無(wú)所不知的全能類,有人把這種類叫做上帝類(God Class)。 如果這個(gè)全能類代表的是農(nóng)場(chǎng)的一個(gè)具體園丁的話,那么這個(gè)園丁就需要對(duì)所有的產(chǎn)品負(fù)責(zé),成了農(nóng)場(chǎng)的關(guān)鍵人物, 他什么時(shí)候不能正常工作了,整個(gè)農(nóng)場(chǎng)都要受到影響; 2)將這么多的邏輯集中放在一個(gè)類里面的另外一個(gè)缺點(diǎn)是,當(dāng)產(chǎn)品類有不同的接口種類時(shí),工廠需要判斷在什么時(shí)候創(chuàng)建某種產(chǎn)品, 這種對(duì)時(shí)機(jī)的判斷和對(duì)哪一種具體產(chǎn)品的判斷邏輯混合在一起,使得系統(tǒng)在將來(lái)進(jìn)行功能擴(kuò)展時(shí)較為困難。 這一缺點(diǎn)在工廠方法模式中得到克服 3)由于簡(jiǎn)單工廠模式使用靜態(tài)方法作為工廠反尬,而靜態(tài)方法無(wú)法由子類繼承,因此工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。 這一缺點(diǎn)會(huì)在工廠方法模式中得到克服 “開(kāi)——閉”原則要求一個(gè)系統(tǒng)的設(shè)計(jì)能夠允許系統(tǒng)在無(wú)需修改的情況下,擴(kuò)展其功能。 要求系統(tǒng)允許當(dāng)新的產(chǎn)品加入系統(tǒng)中時(shí),而無(wú)需對(duì)現(xiàn)有代碼進(jìn)行修改,這一點(diǎn)對(duì)于產(chǎn)品消費(fèi)者角色是成立的,而對(duì)于工廠角色是不成立的 一般而言:一個(gè)系統(tǒng)總是可以劃分成為產(chǎn)品的消費(fèi)者角色(Client)、產(chǎn)品的工廠角色(Factory)以及產(chǎn)品角色(Product)三個(gè)子系統(tǒng) 對(duì)于產(chǎn)品消費(fèi)者角色來(lái)說(shuō),任何時(shí)候需要某種產(chǎn)品,只需向工廠角色請(qǐng)求即可,而工廠角色在接到請(qǐng)求后, 會(huì)自行判斷創(chuàng)建和提供哪一個(gè)產(chǎn)品,所以,產(chǎn)品消費(fèi)者角色無(wú)需知道它得到的是哪一個(gè)產(chǎn)品, 產(chǎn)品消費(fèi)者角色無(wú)需修改就可以接納新的產(chǎn)品,而接納新的產(chǎn)品意味著要修改這個(gè)工廠角色的源代碼 (簡(jiǎn)單工廠角色只在有限的程度上支持“開(kāi)—閉”原則)工廠方法(Factory Method)模式:工廠方法模式是類的創(chuàng)建模式,又叫做虛擬構(gòu)造子模式或者多態(tài)性工廠模式 工廠方法模式的用意是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類中。 一般而言工廠方法模式的系統(tǒng)設(shè)計(jì)到以下幾種角色: 1) 抽象工廠(Creator)角色:擔(dān)任這個(gè)角色的是工廠方法模式的核心,它是與應(yīng)用程序無(wú)關(guān)的, 任何在模式之中個(gè)窗對(duì)象的工廠類必須實(shí)現(xiàn)這個(gè)接口,在實(shí)際系統(tǒng)中,這個(gè)角色也使用抽象類實(shí)現(xiàn) 2) 具體工廠(Concrete Creator)角色:擔(dān)任這個(gè)角色的是實(shí)現(xiàn)了抽象工廠接口的具體java類。 具體工廠角色含有與用應(yīng)密切相關(guān)的邏輯,并且受到應(yīng)用程序的調(diào)用以創(chuàng)建產(chǎn)品對(duì)象。 3) 抽象產(chǎn)品角色:工廠方法模式所創(chuàng)建的對(duì)象的超類型,也就是產(chǎn)品對(duì)象的共同父類或共同擁有的接口, 在實(shí)際應(yīng)用中,這個(gè)角色也常常使用抽象java類實(shí)現(xiàn) 4) 具體產(chǎn)品角色:這個(gè)角色實(shí)現(xiàn)了抽象產(chǎn)品角色所聲明的接口。工廠方法模式所創(chuàng)建的每一個(gè)對(duì)象都是某個(gè)具體產(chǎn)品角色的實(shí)例 Java代碼 、舉例: 2. //抽象工廠(角色)接口 3. public interface Creator{ 4. //工廠方法 5. public Product factory()。 6. } 7. 8. //抽象產(chǎn)品(角色)接口 9. public interface Product{ 10. 11. } //一個(gè)沒(méi)有聲明任何方法的接口叫做標(biāo)識(shí)接口 12. 13. //具體工廠(角色)類 14. public class ConcreteCreator1 implements Creator{ 15. //工廠方法 16. public Product factory(){ 17. return new ConcreteProduct1()。 18. } 19. } 20. 21. public class ConcreteCreator2 implements Creator{ 22. //工廠方法 23. public Product factory(){ 24. return new ConcreteProduct2()。 25. } 26. } 27. 28. //具體產(chǎn)品(角色)類 29. public class ConcreteProduct1 implements Product{ 30. public ConcreteProduct1(){ 31. //do somthing 32. } 33. } 34. 35. public class ConcreteProduct2 implements Product{ 36. public ConcreteProduct2(){ 37. //do somthing 38. } 39. } 40. 41. //客戶端(角色)類 42. public class Client{ 43. private static Creator creator1,creator2。 44. private static Product prod1,prod2。 45. 46. public static void main(String args[]){ 47. creator1 = new ConcreteCreator1()。 48. prod1 = ()。 49. creator2 = new ConcreteCreator2()。 50. prod2 = ()。 51. } 52. } 舉例: //抽象工廠(角色)接口 public interface Creator{ //工廠方法 public Product factory()。 } //抽象產(chǎn)品(角色)接口 public interface Product{ } //一個(gè)沒(méi)有聲明任何方法的接口叫做標(biāo)識(shí)接口 //具體工廠(角色)類 public class ConcreteCreator1 implements Creator{ //工廠方法 public Product factory(){ return new ConcreteProduct1()。 } } public class ConcreteCreator2 implements Creator{ //工廠方法 public Produ
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1