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

正文內(nèi)容

淺析java常用的設(shè)計模式-文庫吧資料

2025-07-06 06:51本頁面
  

【正文】 roduct{ } //一個沒有聲明任何方法的接口叫做標(biāo)識接口 //具體工廠(角色)類 public class ConcreteCreator1 implements Creator{ //工廠方法 public Product factory(){ return new ConcreteProduct1()。 50. prod2 = ()。 48. prod1 = ()。 44. private static Product prod1,prod2。 18. } 19. } 20. 21. public class ConcreteCreator2 implements Creator{ 22. //工廠方法 23. public Product factory(){ 24. return new ConcreteProduct2()。工廠方法模式所創(chuàng)建的每一個對象都是某個具體產(chǎn)品角色的實例 Java代碼 、舉例: 2. //抽象工廠(角色)接口 3. public interface Creator{ 4. //工廠方法 5. public Product factory()。 具體工廠角色含有與用應(yīng)密切相關(guān)的邏輯,并且受到應(yīng)用程序的調(diào)用以創(chuàng)建產(chǎn)品對象。 要求系統(tǒng)允許當(dāng)新的產(chǎn)品加入系統(tǒng)中時,而無需對現(xiàn)有代碼進(jìn)行修改,這一點對于產(chǎn)品消費(fèi)者角色是成立的,而對于工廠角色是不成立的 一般而言:一個系統(tǒng)總是可以劃分成為產(chǎn)品的消費(fèi)者角色(Client)、產(chǎn)品的工廠角色(Factory)以及產(chǎn)品角色(Product)三個子系統(tǒng) 對于產(chǎn)品消費(fèi)者角色來說,任何時候需要某種產(chǎn)品,只需向工廠角色請求即可,而工廠角色在接到請求后, 會自行判斷創(chuàng)建和提供哪一個產(chǎn)品,所以,產(chǎn)品消費(fèi)者角色無需知道它得到的是哪一個產(chǎn)品, 產(chǎn)品消費(fèi)者角色無需修改就可以接納新的產(chǎn)品,而接納新的產(chǎn)品意味著要修改這個工廠角色的源代碼 (簡單工廠角色只在有限的程度上支持“開—閉”原則)工廠方法(Factory Method)模式:工廠方法模式是類的創(chuàng)建模式,又叫做虛擬構(gòu)造子模式或者多態(tài)性工廠模式 工廠方法模式的用意是定義一個創(chuàng)建產(chǎn)品對象的工廠接口,將實際創(chuàng)建工作推遲到子類中。 這一缺點在工廠方法模式中得到克服 3)由于簡單工廠模式使用靜態(tài)方法作為工廠反尬,而靜態(tài)方法無法由子類繼承,因此工廠角色無法形成基于繼承的等級結(jié)構(gòu)。簡單工廠模式通過這種做法實現(xiàn)了對責(zé)任的分割 缺點:1)這個工廠類集中了所有的產(chǎn)品創(chuàng)建邏輯,形成一個無所不知的全能類,有人把這種類叫做上帝類(God Class)。 簡單工廠模式的優(yōu)點己缺點 優(yōu)點:模式的核心是工廠類,這個類有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產(chǎn)品類的實例。 包括:合成模式、策略模式、觀察者模式、也有可能會包括裝飾模式、調(diào)停者模式、迭代子模式以及工廠方法模式等。 備忘錄模式:單例模式和多例模式使用一個屬性或者聚集屬性來登記所創(chuàng)建的產(chǎn)品對象,一邊可以通過查詢這個屬性或者聚集屬性 找到并共享已經(jīng)創(chuàng)建了的產(chǎn)品對象,這就是備忘錄模式的應(yīng)用。 單例模式:單例模式要求單例類的構(gòu)造子是私有的,從而客戶端不能直接將之實例化,而必須通過這個靜態(tài)工廠方法將之實例化, 而且單例類自身是自己的工廠角色。 如果工廠方法使用數(shù)目不確定,或者數(shù)目較大的一些產(chǎn)品對象的話,使用屬性變量存儲對這些產(chǎn)品對象的引用就不方便了, 這時候 就應(yīng)當(dāng)使用聚集對象存儲對產(chǎn)品對象的引用。 如果工廠方法永遠(yuǎn)循環(huán)使用固定數(shù)目的一些產(chǎn)品對象,而且這些產(chǎn)品對象的數(shù)目并不大的話, 可以使用一些私有屬性存儲對這些產(chǎn)品對象的引用。 } } 三個角色: 工廠類(Creator)角色:在客戶端的直接調(diào)用下創(chuàng)建產(chǎn)品對象 抽象產(chǎn)品角色:可以用一個接口或者一個抽象類實現(xiàn) 具體產(chǎn)品角色:工廠方法模式所創(chuàng)建的任何對象都是這個角色的實例 如果工廠方法總是循環(huán)使用同一個產(chǎn)品對象,那么這個工廠對象可以使用一個屬性來存儲這個產(chǎn)品對象。 //拋出異常 }catch(BadFruitException e){ (dont39。 (strawberry)。 try{ (grape)。 } } } //異常類 public class BadFruitException extends Exception{ public BadFruitException(String msg){ super(msg)。 }else if((strawberry)){ return new Strawberry()。 } } //農(nóng)場園丁類,由他決定創(chuàng)建哪種水果類的實例 public class FruitGardener{ //靜態(tài)工廠方法 public static Fruit factory(String which) throws BadFruitException{ if((apple)){ return new Apple()。 } public void plant(){ log(Strawberry has been planted.)。 } } //草莓類 public class Strawberry implements Fruit{ public void grow(){ log(Strawberry is growing...)。 } //有無籽方法 public boolean getSeedless(){ return seedless。 } public void plant(){ log(Grape has been planted.)。 public void grow(){ log(Grape is growing...)。 } public void setTreeAge(int treeAge){ = treeAge。 } //輔助方法 public static void log(String msg){ (msg)。 } public void harvest(){ log(Apple has been harvented.)。 //收獲 void plant()。 121. } 122. } 123. 舉例: //水果接口 public interface Fruit{ void grow()。 //拋出異常 119. }catch(BadFruitException e){ 120. (dont39。 117. (strawberry)。 114. try{ 115. (grape)。 100. } 101. } 102. } 103. 104. //異常類 105. public class BadFruitException extends Exception{ 106. public BadFruitException(String msg){ 107. super(msg)。 96. }else if((strawberry)){ 97. return new Strawberry()。 85. } 86. } 87. 88. //農(nóng)場園丁類,由他決定創(chuàng)建哪種水果類的實例 89. public class FruitGardener{ 90. //靜態(tài)工廠方法 91. public static Fruit factory(String which) throws BadFruitException{ 92. if((apple)){ 93. return new Apple()。 77. } 78. 79. public void plant(){ 80. log(Strawberry has been planted.)。 66. } 67. } 68. 69. //草莓類 70. public class Strawberry implements Fruit{ 71. public void grow(){ 72. log(Strawberry is growing...)。 57. } 58. 59. //有無籽方法 60. public boolean getSeedless(){ 61. return seedless。 49. } 50. 51. public void plant(){ 52. log(Grape
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1