日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
對(duì)Java設(shè)計(jì)模式的總結(jié)

Java設(shè)計(jì)模式中有23中模式,下面只對(duì)其中五種常用的設(shè)計(jì)模式進(jìn)行介紹:

1.單例模式(有的書上說叫單態(tài)模式其實(shí)都一樣) :

該模式主要目的是使內(nèi)存中保持1個(gè)對(duì)象。

具體看看下面的例子:

 
 
 
  1. package org.sp.singleton;  
  2.  
  3. //方法一  
  4. public class Singleton {  
  5. //將自身的實(shí)例對(duì)象設(shè)置為一個(gè)屬性,并加上Static和final修飾符  
  6. private static final Singleton instance = new Singleton();  
  7. //將構(gòu)造方法設(shè)置成私有形式  
  8. private Singleton() {  
  9. }  
  10. //通過一個(gè)靜態(tài)方法向外界提供這個(gè)類的實(shí)例  
  11. public static Singleton getInstance() {  
  12.    return instance;  
  13. }}//方法二  
  14. class Singleton2 {  
  15.  
  16. private static Singleton2 instance2 = null;  
  17.  
  18. public static synchronized Singleton2 getInstance() {  
  19.  
  20.    if (instance2 == null)  
  21.     instance2 = new Singleton2();  
  22.    return instance2;  
  23. }  

注:這二個(gè)Java設(shè)計(jì)模式實(shí)現(xiàn)了一樣的功能,但個(gè)人推薦采用***種方法。

2.工廠模式

該Java設(shè)計(jì)模式主要功能是統(tǒng)一提供實(shí)例對(duì)象的引用。

具體看看下面的例子:

 
 
 
  1. view plaincopy to clipboardprint?  
  2. public class Factory{     
  3. public ClassesDao getClassesDao(){     
  4.    ClassesDao cd = new ClassesDaoImpl();     
  5.    return cd;     
  6. }     
  7. }     
  8.   interface ClassesDao{     
  9. public String getClassesName();     
  10.     
  11. }     
  12.   class ClassesDaoImpl implements ClassesDao {     
  13. public String getClassesName(){     
  14.    System.out.println("A班");     
  15. }     
  16. }     
  17.   class test     
  18. {     
  19. public static void main(String[] args){     
  20.    Factory f = new Factory();     
  21.    f.getClassesDao().getClassesName();     
  22. }     
  23. }  public class Factory{  
  24. public ClassesDao getClassesDao(){  
  25.    ClassesDao cd = new ClassesDaoImpl();  
  26.    return cd;  
  27. }  
  28. }interface ClassesDao{  
  29. public String getClassesName();  
  30.  
  31. }class ClassesDaoImpl implements ClassesDao {  
  32. public String getClassesName(){  
  33.    System.out.println("A班");  
  34. }  
  35. }class test  
  36. {  
  37. public static void main(String[] args){  
  38.    Factory f = new Factory();  
  39.    f.getClassesDao().getClassesName();  
  40. }  

這個(gè)是最簡(jiǎn)單的例子了,就是通過工廠方法通過接口獲取對(duì)象的引用

3.建造模式

該模式其實(shí)就是說,一個(gè)對(duì)象的組成可能有很多其他的對(duì)象一起組成的,比如說,一個(gè)對(duì)象的實(shí)現(xiàn)非常復(fù)雜,有很多的屬性,而這些屬性又是其他對(duì)象的引用,可能這些對(duì)象的引用又包括很多的對(duì)象引用。封裝這些復(fù)雜性,就可以使用建造模式。

4.門面模式

這個(gè)模式個(gè)人感覺像是Service層的一個(gè)翻版。比如Dao我們定義了很多持久化方法,我們通過Service層將Dao的原子方法組成業(yè)務(wù)邏輯,再通過方法向上層提供服務(wù)。門面模式道理其實(shí)是一樣的。

具體看看這個(gè)例子:

 
 
 
  1. view plaincopy to clipboardprint?  
  2. interface ClassesDao{     
  3. public String getClassesName();     
  4.     
  5. }     
  6.   class ClassesDaoImpl implements ClassesDao {     
  7. public String getClassesName(){     
  8.    return "A班";     
  9. }     
  10. }     
  11.   interface ClassesDao2{     
  12. public String getClassesName();     
  13.     
  14. }     
  15.   class ClassesDaoImpl2 implements ClassesDao {     
  16. public String getClasses2Name(){     
  17.    return "B班";     
  18. }     
  19. }     
  20.   class ServiceManager     
  21. {     
  22. private ClassesDao cd = new ClassesDaoImpl();     
  23. private ClassesDao2 cd2 = new ClassesDaoImpl2();     
  24. public void printOut(){     
  25.    System.out.println(cd.getClassesName()+"   "+cd2.getClassesName());     
  26. }     
  27. };  interface ClassesDao{  
  28. public String getClassesName();  
  29.  
  30. }class ClassesDaoImpl implements ClassesDao {  
  31. public String getClassesName(){  
  32.    return "A班";  
  33. }  
  34. }interface ClassesDao2{  
  35. public String getClassesName();  
  36.  
  37. }class ClassesDaoImpl2 implements ClassesDao {  
  38. public String getClasses2Name(){  
  39.    return "B班";  
  40. }  
  41. }class ServiceManager  
  42. {  
  43. private ClassesDao cd = new ClassesDaoImpl();  
  44. private ClassesDao2 cd2 = new ClassesDaoImpl2();  
  45. public void printOut(){  
  46.    System.out.println(cd.getClassesName()+"   "+cd2.getClassesName());  
  47. }  
  48. }; 

雖然這個(gè)例子不全,但基本意思已經(jīng)很明顯了。

5.策略模式

這個(gè)模式是將行為的抽象,即當(dāng)有幾個(gè)類有相似的方法,將其中通用的部分都提取出來,從而使擴(kuò)展更容易。

具體看這個(gè)例子:

 
 
 
  1. view plaincopy to clipboardprint?  
  2. package org.sp.strategy;       
  3. /**    
  4. * 加法具體策略類    
  5. * @author 無盡de華爾茲    
  6. *    
  7. */    
  8. public class Addition extends Operation {       
  9. @Override    
  10. public float parameter(float a, float b) {     
  11.    return a+b;     
  12. }      
  13. }       
  14. package org.sp.strategy;       
  15. /**    
  16. * 除法具體策略類    
  17. * @author 無盡de華爾茲    
  18. *    
  19. */    
  20. public class Division extends Operation {       
  21. @Override    
  22. public float parameter(float a, float b) {     
  23.    return a/b;     
  24. }      
  25. }      
  26. package org.sp.strategy;      
  27. /**    
  28. * 乘法具體策略類    
  29. * @author 無盡de華爾茲    
  30. *    
  31. */    
  32. public class Multiplication extends Operation{      
  33. @Override    
  34. public float parameter(float a, float b) {     
  35.    return a*b;     
  36. }       
  37. }       
  38. package org.sp.strategy;     
  39.     
  40. /**    
  41. * 減法具體策略類    
  42. * @author 無盡de華爾茲    
  43. *    
  44. */    
  45. public class Subtration extends Operation {     
  46.     
  47. @Override    
  48. public float parameter(float a, float b) {     
  49.    return a-b;     
  50. }       
  51. }        
  52. package org.sp.strategy;       
  53. /**    
  54. * 抽象策略類也可以使用接口來代替    
  55. * @author 無盡de華爾茲    
  56. *    
  57. */    
  58. public abstract class Operation {     
  59.     
  60. public abstract float parameter(float a, float b);     
  61. }      
  62. package org.sp.strategy;     
  63.     
  64. /**    
  65. * 策略環(huán)境類     
  66. * @author 無盡de華爾茲    
  67. *    
  68. */    
  69. public class Condition {      
  70. public static final Addition add = new Addition();       
  71. public static final Subtration sub = new Subtration();       
  72. public static final Multiplication mul = new Multiplication();     
  73. public static final Division div = new Division();     
  74.     
  75. }     
  76. package org.sp.strategy;     
  77.     
  78. /**    
  79. * 測(cè)試客戶端    
  80. * @author 無盡de華爾茲    
  81. *    
  82. */    
  83. public class Client {     
  84.     
  85. public static void main(String[] args) {     
  86.    float a = 100;     
  87.    float b = 25;     
  88.        
  89.    System.out.println(Condition.div.parameter(a, b));     
  90. }       
  91. }   

以上便是對(duì)Java設(shè)計(jì)模式中五種常用的設(shè)計(jì)模式進(jìn)行介紹。


當(dāng)前文章:對(duì)Java設(shè)計(jì)模式的總結(jié)
分享URL:http://m.5511xx.com/article/ccssisd.html