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

正文內(nèi)容

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

2024-07-27 06:51 本頁面
 

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