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

正文內(nèi)容

java程序設(shè)計模式程序設(shè)計-全文預(yù)覽

2024-09-24 17:53 上一頁面

下一頁面
  

【正文】 public String getShapeName(){ 5. retun shapeName。 抽象工廠 :用來生產(chǎn)不同產(chǎn) 品族 (由不同產(chǎn)品組合成的一套產(chǎn)品 )的全部產(chǎn)品,對于增加新的產(chǎn)品,無能為力;支持增加產(chǎn)品族。 使用工廠模式,返回的實例一定是工廠創(chuàng)建的,而不是從其他對象中獲取的。 40. ()。 36. ICar car = ()。 15. } 16. } 17. //抽象汽車工廠 18. abstract class CarFactory{ 19. public abstract ICar createCar()。工廠方法定義一個用于創(chuàng)建產(chǎn)品的接口,讓子類決定實例化哪一個類,使得類的實例化延遲到子類。 74. //換一套 Android 的皮膚 75. (new AndroidSkinFactory())。 58. } 59. } 60. //Android 皮膚工廠 61. class AndroidSkinFactory implements SkinFactory{ 62. public Style getStyle(){ 63. return new AndroidStyle()。 44. } 45. } 46. //抽象皮膚工廠 47. interface SkinFactory{ 48. public Style getStyle()。 22. } 23. } 24. //Android style 25. class AndroidStyle implements Style{ 26. public void showStyle(){ 27. (“This is Android style”)。 4. public Skin(SkinFactory factory){ 5. setSkinFactory(factory)。 30. } 31. public static void main(String[] args){ 32. draw((“Circle”))。 4. } 5. //圓形 6. class Circle implements Shape{ 7. public void draw(){ 8. (“Circle is drawing”)。 (2).Strategy 策略模式重點在于根據(jù)需求直接采用設(shè)定的策略,即根據(jù)場景選擇合適的處理算法,而不需要改變狀態(tài)。 38. String testText2 = This is a test text!!rn Oh! Line Returnrn。 28. String result = (“n, rn))。 17. String result = (rn, n))。 4. 5. public TextStrategy(String text) { 6. = text。 (2).隱藏容器的實現(xiàn)細(xì)節(jié)。 25. } 26. } 27. //不支持 remove 操作 28. public void remove(){ 29. throw new UnsupportedOperationException( 30. Alternating MyIterator does not support remove())。 17. position++。 7. } 8. //作為內(nèi)部類的具體迭代器角色 9. private class Itr implements Iterator { 10. ArrayList myList。 5. void remove()。 3) 容器角色( Container):容器角色負(fù)責(zé)提供創(chuàng)建具體迭代器角色的接口。該方法雖然是省事,卻又將容器的內(nèi)部細(xì)節(jié)暴露無遺。 (2).Proxy 代理模式的目的是控制客戶端對目標(biāo)程序的訪問,而 State 狀態(tài)模式是為了根據(jù)條件動態(tài)改變目標(biāo)程序。 69. (sp)。 62. private void run(ServiceProvider sp){ 63. ()。 50. //…… 51. ()。 36. } 37. //狀態(tài)更改 38. public void changeState(State newState){ 39. state = newState。 23. } 24. public void operation2(){ 25. (“()”)。 6. } 7. //狀態(tài)實現(xiàn)類 1 8. class implementation1 implements State{ 9. public void operation1(){ 10. (“()”)。 28. } 29. } State 狀態(tài)設(shè)計模式中,狀態(tài)自動切換并傳播,不需要再改動標(biāo)識,代碼顯得非常優(yōu)雅。 22. } 23. public static void main(String[] args){ 24. Creature creature = new Creature()。 9. } 10. } 11. private class Prince implements State{ 12. public String response(){ 13. return “Darling!”。 17. ()。 6. }else{ 7. (“Darling!”)。 當(dāng)用戶調(diào)用這個動態(tài)生成的實現(xiàn)類時,實際上是 調(diào)用了自定義 Handler 的invoke 方法。和 結(jié)合,可以加強(qiáng)現(xiàn)有類的方法實現(xiàn)。 39. (“f”)。 30. return null。 23. public ProxyHandler (Object obj) { 24. delegate = obj。 6. } 7. //接口實現(xiàn)類,即被代理類 8. class FooImpl implements Foo{ 9. public void f(String s){ 10. (“(), s=” + s)。 43. } 44. } 從 以后, java 引入動態(tài)代理機(jī)制, java 的動態(tài)代理只能針對接口進(jìn)行動態(tài)代理,即要實現(xiàn)動態(tài)代理的類必須實現(xiàn)接口, CGLIB 提供了針對類的動態(tài)代理功能。 33. } 34. } 35. //客戶端程序調(diào)用代理 36. public class ProxyDemo{ 37. public static void main(String[] args){ 38. //客戶端調(diào)用代理程序 39. Proxy p = new Proxy()。 18. } 19. public void h(){ 20. ()。 5. } 6. //代理程序 7. class Proxy implement ProxyBase{ 8. private ProxyBase implementation。 Proxy 設(shè)計模式 Proxy 代理設(shè)計模式是一種控制對象訪問的設(shè)計模式,類似于網(wǎng)絡(luò)代理,網(wǎng)絡(luò)代理機(jī)制如下圖: Proxy 代理設(shè)計模式機(jī)制如下: 客戶端程序通過代理程序來訪問真正的目標(biāo)程序,代理程序?qū)ν怆[藏了目標(biāo)程序。 11. } Singleton 單類模式中只有一個 INSTANCE 枚舉元 素,枚舉可以保證真?zhèn)€程序生命周期中只有一個實例對象存在,同時還避免了常規(guī) Singleton 單類模式 private 構(gòu)造方法被反射調(diào)用和序列化問題。 (2).對象序列化之后再反序列化時會生成新的對象,因此當(dāng) Singleton 單類模式類實現(xiàn)序列化接口時,必須顯式聲明所有的字段為 tranisent。 12. } 13. return instance。 單類模式有兩種實現(xiàn)方式:飽漢模式和餓漢模式,如下: 飽漢單類模式例子代碼: [java] view plaincopy 1. public class Singleton1{ 2. //飽漢模式,聲明時就創(chuàng)建實例對象 3. public static final Singleton1 instance = new Singleton1()。單類模式實現(xiàn)了類似 C語言中全局變量的功能,單類模式常用于注冊 /查找的服務(wù)。 4. //單類模式的構(gòu)造方法必須為 private,以避免通過構(gòu)造方法創(chuàng)建對象實例, 5. //并且必須顯示聲明構(gòu)造方法,以防止使用默認(rèn)構(gòu)造方法 6. private Singleton2(){} 7. //單類模式必須對外提供獲取實例對象的方法,延遲初始化的單類模式必須使用synchronized 同步關(guān)鍵字,否則多線程情況下很容易產(chǎn)生 多個實例對象 8. public static synchronized Singleton2 geInstance(){ 9. //延遲初始化,只有當(dāng)?shù)谝淮问褂脮r才創(chuàng)建對象實例 10. if(instance == null){ 11. return new Singleton2()。因此 Singleton 單類模式必須考慮這種例外情況。 9. } 10. public abstract void doSomething()。 另外,實現(xiàn)了單類模式的類不能再有派生子類,因為構(gòu)造方式是私有的,子類無法調(diào)用父類構(gòu)造方法,因此達(dá)到了 Final 的效果。 4. public void h()。 15. } 16. public void g(){ 17. ()。 30. } 31. public void h(){ 32. (“()”)。 42. ()。 5. public void h(int i, String s)。 17. } 18. } 19. //動態(tài)代理處理類 20. class ProxyHandler implements InvocationHandler{ 21. //代理實現(xiàn)類 22. private Object delegate。 29. (“After mothod:” + method)。 37. //產(chǎn)生動態(tài)代理 38. Foo proxy = (Foo)((), new Class[]{Foo.class}, handler)。 42. } 43. } 動態(tài)代理和普通的代理模式的區(qū)別:動態(tài)代理中的代理類是由 類在運行期時根據(jù)接口定義,采用 Java 反射功能動態(tài)生成的。而 Proxy類根據(jù) Handler和需要代理的接口動態(tài)生成一個接口實現(xiàn)類的對象。//標(biāo)識 3. public void greet(){ 4. if(isF){ 5. (“Ribbet!”)。 16. ()。 5. } 6. private class F implements State{ 7. public String re
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1