亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# interface的使用方法

發布時間:2021-07-16 10:17:24 來源:億速云 閱讀:149 作者:chen 欄目:編程語言

本篇內容介紹了“C# interface的使用方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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

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

/**   *提供最基本的封裝策略,把POST GET數據分開處理   */ public interface BaseHttpRequest extends HttpServletRequest{    public String getFormString();   public String getFormParameter(String key);    public String getFormParameters(String key);   public String getUrlParameter(String key);   public String getUrlParameters(String key);  }  /**   * 提供安全驗證的請求策略   */ public interface SecurityHttpRequestextends HttpServletRequest{   /**  * validator input stream include xss,  sqlinjection or csrfthen throws exception  * @throws RequestValidatorException  */  public void validateRequest()throws RequestValidatorException;  }  /**   * 提供文件上傳自動化   */ public interface FileHttpRequest extends HttpServletRequest{  /**  * @return http post file mapping   */ public HttpFileMap getFiles();  }

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

public interface HttpRequest extends   FileHttpRequest, SecurityHttpRequest, BaseHttpRequest{   /**  * 錯誤的做法。   */ }

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

public abstract class AbstractHttpRequest   implements BaseHttpRequest,SecurityHttpRequest,FileHttpRequest {  }

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

例如可以這樣:

AbstractHttpRequestr=(AbstractHttpRequest)request;  r.validateRequest();  r.getFiles();  r.getFormString();  ...

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

BaseHttpRequestbhr=(BaseHttpRequest)request;  bhr.getFormString();  SecurityHttpRequestshr=(SecurityHttpRequest)request;  shr.validateRequest();  FileHttpRequest fhr=(FileHttpRequest)request;  fhr.getFiles();

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

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

public interface RequestSecurity : ICloneable  {  void validator();  }  public interface RequestFormSetterGetter : ICloneable  {  void setForm();  }  public interface RequestFileUtil : ICloneable   {  void getFile();   }  public interface RequestAll : RequestSecurity,   RequestFormSetterGetter, RequestFileUtil  {  }  public class RequestImpl : RequestAll   {  public void validator()   {  }  public void setForm()  {  }  public void getFile()  {  }  public object Clone()   {  return new object();  }  }

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

“C# interface的使用方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三江| 鱼台县| 武清区| 新和县| 周宁县| 台北县| 凌源市| 呼和浩特市| 云浮市| 湖南省| 曲靖市| 中方县| 土默特左旗| 新沂市| 贵德县| 石嘴山市| 钟祥市| 霍林郭勒市| 永昌县| 廉江市| 青冈县| 高尔夫| 射阳县| 神农架林区| 嵊泗县| 乌苏市| 毕节市| 扬州市| 横峰县| 新化县| 沈丘县| 吴川市| 平邑县| 临江市| 克山县| 都昌县| 辽源市| 满洲里市| 丰镇市| 旬邑县| 开阳县|