成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# interface使用實例分析

開發 后端
C# interface使用比Java有什么方便之處呢?具體的表現是什么呢?那么本文就向你介紹這方面的內容。

C# interface使用有什么優點呢?首先我們來比較下Java的interface因為有需求,所以需要自己封裝JavaEE的HttpServletRequest,HttpServletResponse加入更多的功能,例如封狀一些表單驗證,安全驗證,文件上傳等功能。

對于C# interface的理解首先我們來看看下面Java interface代碼。

  1. /**  
  2.  *提供最基本的封裝策略,把POST GET數據分開處理  
  3.  */ 
  4. public interface BaseHttpRequest extends HttpServletRequest{  
  5.  
  6.  public String getFormString();  
  7.  public String getFormParameter(String key);   
  8.  public String getFormParameters(String key);  
  9.  public String getUrlParameter(String key);  
  10.  public String getUrlParameters(String key);  
  11. }  
  12. /**  
  13.  * 提供安全驗證的請求策略  
  14.  */ 
  15. public interface SecurityHttpRequestextends HttpServletRequest{  
  16.  /**  
  17. * validator input stream include xss,  
  18. sqlinjection or csrfthen throws exception  
  19. * @throws RequestValidatorException  
  20. */ 
  21.  public void validateRequest()throws RequestValidatorException;  
  22. }  
  23. /**  
  24.  * 提供文件上傳自動化  
  25.  */ 
  26. public interface FileHttpRequest extends HttpServletRequest{  
  27. /**  
  28. * @return http post file mapping   
  29. */ 
  30. public HttpFileMap getFiles();  
  31. }  

那么得要把3種不同類別的HttpRequest接口 整合起來。卻想起JAVA中接口之間因為是互相繼承,而且不能多個。這樣就麻煩了 看以下代碼是錯誤的。

  1. public interface HttpRequest extends   
  2. FileHttpRequest, SecurityHttpRequest, BaseHttpRequest{  
  3.  /**  
  4. * 錯誤的做法。   
  5. */ 

怎么辦呢?只能使用抽象類了

  1. public abstract class AbstractHttpRequest   
  2. implements BaseHttpRequest,SecurityHttpRequest,FileHttpRequest {  

看了吧? 當用戶需要實現以上統一的接口時候就需要繼承了這個抽象類。按照他們的功能區分為3個接口類,也是為了不要讓一個接口類非常臃腫。可能有人會問 直接寫一個類實現3個接口就可以啦!為什么非要把這些接口都集成為1個接口在實現?其實集成起來的目的就是為了對外接口的統一松耦合,組件內高類聚。

例如可以這樣:

  1. AbstractHttpRequestr=(AbstractHttpRequest)request;  
  2. r.validateRequest();  
  3. r.getFiles();  
  4. r.getFormString();  
  5. ... 

如果不對外統一,調用者就非常麻煩:

  1. BaseHttpRequestbhr=(BaseHttpRequest)request;  
  2. bhr.getFormString();  
  3. SecurityHttpRequestshr=(SecurityHttpRequest)request;  
  4. shr.validateRequest();  
  5. FileHttpRequest fhr=(FileHttpRequest)request;  
  6. fhr.getFiles(); 

以上是從設計角度為應用者考慮。繼續回到剛剛使用抽象類來實現3個接口,而具體在設計實現類的時候,直接繼承 AbstractHttpRequest 抽象類不也就OK了嗎?其實這樣也不是理想的。現在主流的開發語言Java C#等 都提倡面向接口,消除繼承,為什么?可以去看看《JAVA設計模式》但因為Java的語法原因,我們被逼使用繼承抽象類......接下來我們看看C# interface使用時是否如此考慮到這些問題。

以下是我寫的C# interface設計測試代碼。

  1. public interface RequestSecurity : ICloneable  
  2. {  
  3. void validator();  
  4. }  
  5. public interface RequestFormSetterGetter : ICloneable  
  6. {  
  7. void setForm();  
  8. }  
  9. public interface RequestFileUtil : ICloneable  
  10.  {  
  11. void getFile();  
  12.  }  
  13. public interface RequestAll : RequestSecurity,   
  14. RequestFormSetterGetter, RequestFileUtil  
  15. {  
  16. }  
  17. public class RequestImpl : RequestAll  
  18.  {  
  19. public void validator()   
  20. {  
  21. }  
  22. public void setForm()  
  23. {  
  24. }  
  25. public void getFile()  
  26. {  
  27. }  
  28. public object Clone()   
  29. {  
  30. return new object();  
  31. }  

編譯通過,總的來說,C#允許接口之間多重繼承。

C# interface使用的基本內容以及C# interface使用與Java的比較就向你介紹到這里,希望對你了解和學習C# interface使用有所幫助。

【編輯推薦】

  1. C# interface實例淺析
  2. C# interface編程應用淺析
  3. C#interface定義及使用淺析
  4. C#顯式實現接口原理淺析
  5. C# interface學習經驗淺談
責任編輯:仲衡 來源: diybl.com
相關推薦

2009-08-27 13:30:11

C# interfac

2009-08-27 17:11:44

C# Fluent I

2009-09-01 18:36:35

C#委托實例

2009-09-01 09:16:57

C#使用SharpZi

2009-08-27 14:44:11

C# interfac

2009-08-27 14:12:02

C# interfac

2009-08-27 16:00:03

C#靜態字段C#實例字段

2009-09-14 14:25:53

C# Lambda EC# Lambda

2009-09-02 18:39:34

C#遞歸算法

2009-09-02 18:44:19

C#遞歸

2009-08-13 14:56:46

C#的結構體使用

2009-09-04 15:53:42

C#內存流

2009-08-17 09:39:40

C# Windows

2009-08-26 13:36:33

C#打印控件

2009-08-03 10:48:21

C#日期格式到毫秒

2009-08-24 16:08:45

C# DrawStri

2009-08-28 16:37:32

C# for循環

2021-03-15 08:18:23

C#反射模塊

2009-09-01 18:29:10

C#繼承C#多態

2009-08-27 17:59:56

C#接口定義
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频一区二区在线观看 | 国产ts人妖系列高潮 | 成人黄色av网站 | 中文字幕乱码一区二区三区 | 久久亚洲欧美日韩精品专区 | 国产精产国品一二三产区视频 | 中文字幕在线视频免费视频 | 成人在线播放网站 | 久久国际精品 | 国产在线永久免费 | 一区二区高清 | 性一交一乱一伦视频免费观看 | 可以免费观看的av片 | 天堂在线免费视频 | 欧美视频 亚洲视频 | 成人av电影天堂 | 亚洲午夜久久久 | www.99热.com | 欧美激情视频一区二区三区在线播放 | 久久精品国产一区二区电影 | 中国av在线免费观看 | 久久久精品日本 | 黄在线| 日韩亚洲欧美综合 | 欧美精品久久久久 | 久久国产精99精产国高潮 | 国产美女h视频 | 国产福利在线免费观看 | 国产日韩久久 | 亚洲欧美视频 | 亚洲精品成人 | 亚洲精品久久久久中文字幕欢迎你 | 99re在线视频观看 | 欧美区在线 | 欧美中文字幕一区二区三区亚洲 | 亚洲经典一区 | 久久99精品久久久久久青青日本 | 欧美激情综合色综合啪啪五月 | 欧美精品久久 | 日韩一区二区三区视频在线观看 | 国产99久久精品一区二区永久免费 |