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

正文內(nèi)容

淺析java常用的設(shè)計(jì)模式(參考版)

2025-07-03 06:51本頁面
  

【正文】 23 / 23??梢钥紤]用其它方法解決。假如我們已經(jīng)實(shí)現(xiàn)了抽象工廠Client想要某種或多種產(chǎn)品,我們通過抽象工廠提供給它一個接口;工廠中增加已有抽象的具體產(chǎn)品,可以增加一個具體工廠而不需要去修改其它的設(shè)計(jì);工廠中要增加新的抽象層面的產(chǎn)品,新增一個抽象產(chǎn)品類,增加所需要的具體產(chǎn)品,那么抽象工廠層是否需要修改,這似乎就違背了不修改現(xiàn)有代碼的初衷了。試想一下,如果我們給ProductB再增加2種甚至更多的產(chǎn)品的時候,是否我們需要增加2種或者更多的具體工廠類來實(shí)現(xiàn)抽象工廠呢?如果是,那么就會有多余的factoryA()方法被“空實(shí)現(xiàn)”。ProductA擁有ProductA1, ProductA2兩種具體產(chǎn)品, ProductB擁有ProductB1, ProductB2兩種具體產(chǎn)品,正因?yàn)橛辛水a(chǎn)品族和1, 2這兩種相對性,我們才能抽象出工廠接口來。 11. newfactoryB()public 7. newfactoryA()publicCreatorConcreteCreator1 4. public 3. */java 代碼1. /** 不難發(fā)現(xiàn),這種抽象與抽象產(chǎn)品的種類有關(guān),有多少種抽象產(chǎn)品,就應(yīng)有多少種抽象工廠方法。 4. }//返回產(chǎn)品ProductB factoryB()。 3. //返回產(chǎn)品ProductA factoryA()。 2. { interface產(chǎn)品族也就是好有多個抽象產(chǎn)品,其下可能還擁有抽象產(chǎn)品和具體產(chǎn)品。在實(shí)際的開發(fā)中,我們所面對的產(chǎn)品是分等級的,庫存管理系統(tǒng)尤為顯現(xiàn)。Abstract Factory自然工廠方法模式不能很好的解決這種問題。即工廠方法模式是將注意集中在可抽象產(chǎn)品概念上(意即多個具體產(chǎn)品可抽象化)。工廠方法模式似乎同抽象工廠模式很類似,但或許引入產(chǎn)品族后可以做一下比較。Factory Method工廠方法模式是類的創(chuàng)建模式,定義一個創(chuàng)建工廠接口,將實(shí)際的創(chuàng)建工作推到子類工廠中??紤]一下,如果我們新增了一種產(chǎn)品,那么在我們的靜態(tài)工廠類中就必須再加入返回該新增的產(chǎn)品類的方法,是需要修改這個工廠類的。如果存在多種抽象產(chǎn)品,必須考察抽象產(chǎn)品是由抽象類來實(shí)現(xiàn)還是用接口來表現(xiàn)了,如果具體產(chǎn)品之間擁有共同的商業(yè)邏輯,一般都應(yīng)用抽象類來表現(xiàn),否則應(yīng)用接口來表現(xiàn),在一個類型的等級結(jié)構(gòu)中,將共同的部分盡量向上塑造。簡單工廠模式基本是用一個類來模擬工廠,通過該工廠類的靜態(tài)方法返回具體的產(chǎn)品類,而這些產(chǎn)品又源自一個抽象的產(chǎn)品(當(dāng)然,這兒可能會存在多種抽象產(chǎn)品,即有多種不同類型的產(chǎn)品,如蔬菜、瓜果等等),即靜態(tài)工廠模式。 68. ResultSet rs = ()。 62. 63. public class Client{ 64. private static QueryRunner runner。 56. return (sql)。 48. } 49. 50. protected String createSql(){ 51. return select * from customers。 43. import 。 37. } 38. } 39. 40. //具體工廠類 41. import 。 32. } 33. 34. protected ResultSet runSql(Connection conn,String sql) throws Exception{ 35. Statement stmt = ()。 24. 25. public class SybaseQueryRunner extends QueryRunner{ 26. public Connection createConnection(){ 27. return null。 22. import 。 17. protected abstract ResultSet runSql(Connection sql)throws Exception。 14. } 15. protected abstract Connection createConnection()。 12. String sql = createSql()。 7. import 。一個MVC模式可以有多個控制器和多個視圖,控制器端可以創(chuàng)建合適的視圖斷,如同工廠角色創(chuàng)建合適的對象角色一樣,模型端則可以充當(dāng)這個創(chuàng)建過程的客戶端 亨元模式 使用了帶有邏輯的工廠方法 備忘錄模式 亨元模式使用了一個聚集來等級所創(chuàng)建的產(chǎn)品對象,以便可以通過查詢這個聚集找到和共享已經(jīng)創(chuàng)建了的產(chǎn)品對象,這就是備忘錄模式的應(yīng)用 Java代碼 、舉例: 2. 問題:某一個商業(yè)軟件產(chǎn)品需要支持Sybase和Oracle數(shù)據(jù)庫。 } } //其他同上..........................工廠方法返還的類型 工廠返還的應(yīng)當(dāng)是抽象類型,而不是具體類型,只有這樣才能保證整隊(duì)產(chǎn)品的多態(tài)性,調(diào)用該工廠方法的客戶端可以針對抽象編程,依賴于一個抽象產(chǎn)品類型,而不是具體產(chǎn)品類型。 } public int getTreeAge(){ return treeAge。 } public void plant(){ log(Apple has been planted.)。 public void grow(){ log(Apple is growing...)。 void plant()。 } } //抽象產(chǎn)品角色(水果接口) public interface Fruit{ void grow()。 } } //......(草莓園?。? public class StrawberryGardener implements FuritGardener{ public Fruit factory(){ return new Strawberry()。 62. } 63. } 64. //其他同上.......................... 舉例: //抽象工廠角色(水果園?。? public interface FruitGardener{ //工廠方法 public Fruit factory()。 54. } 55. 56. public int getTreeAge(){ 57. return treeAge。 46. } 47. 48. public void plant(){ 49. log(Apple has been planted.)。 39. 40. public void grow(){ 41. log(Apple is growing...)。 33. void plant()。 26. } 27. } 28. 29. //抽象產(chǎn)品角色(水果接口) 30. public interface Fruit{ 31. void grow()。 12. } 13. } 14. 15. //......(草莓園?。? 16. public class StrawberryGardener implements FuritGardener{ 17. public Fruit factory(){ 18. return new Strawberry()。 } }Client對象的活動可以分為兩部分 1) 客戶端創(chuàng)建 ConcreteCreator1 對象,這時客戶端所持有變量的靜態(tài)類型是Creator,而實(shí)際類型是 ConcreteCreator1,然后,客戶端調(diào)用 ConcreteCreator1 對象的工廠方法 factory() ,接著后者調(diào)用 ConcreteProduct1 的構(gòu)造子創(chuàng)建出產(chǎn)品對象 Java代碼 、舉例: 2. //抽象工廠角色(水果園?。? 3. public interface FruitGardener{ 4. //工廠方法 5. public Fruit factory()。 creator2 = new ConcreteCreator2()。 public static void main(String args[]){ creator1 = new ConcreteCreator1()。 } } //具體產(chǎn)品(角色)類 public class ConcreteProduct1 implements Product{ public ConcreteProduct1(){ //do somthing } } public class ConcreteProduct2 implements Product{ public ConcreteProduct2(){ //do somthing } } //客戶端(角色)類 public class Client{ private static Creator creator1,creator2。 } //抽象產(chǎn)品(角色)接口 public interface P
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1