泛型解決實際開發應用一例

來源:互聯網
上載者:User

泛型有什麼好處就這裡就不介紹,因為網上有更多詳盡的資料。下面看一下相關情況的類結構圖:



以上是制定業務處理的基礎規則結構圖,裡面分別描述了基於泛型的查詢基礎規則(QueryAdapterAs)和不基於泛型的查詢基礎規則(QueryAdapter);兩者完成的功能都是對IFilter描述資訊進行資料查詢。

使用代碼:

QueryAdapter query = new QueryAdapter();

CategoryFilter filter = new CategoryFilter();

filter.CategoryName = textBox1.Text;

query.Filter = filter;

query.Execute();

 

QueryAdapterAs<CategoryFilter> queryas = new QueryAdapterAs<CategoryFilter>();

queryas.Filter.CategoryName = textBox1.Text;

query.Execute();

 

從使用方便性上QueryAdapterAs要比QueryAdapter方便,更重要的一個問題就是QueryAdapterAs在定義時就必須提供相關相關Filter資訊,雖然QueryAdapter可以通過建構函式來約束必須提供Filter對象;但由於IFilter只能體現自有資訊,在操作訪問實現者成員時很不方便。

除了面對以上使用問題外,還要有擴充的問題:

  class CategoryQuery:QueryAdapter

  {


  }

當需要從QueryAdapter派生出新的查詢類來完成更具體功能時問題就來了,按道理CategoryQuery的Filter必須相關的對象資訊,但是Filter成員確以IFilter的方式體現;就是說使用者完全可以設定其他的Filter對象(會產生什麼問題大家也能相到)。

通過泛型就能解決這隱形問題,因為在派生時就已經明確相關Filter具體類型;由於使用規則明確,使用者就沒有機會犯那種錯誤。

    class CategoryQuery:QueryAdapterAs<CategoryFilter>

    {

 

}

雖然以上描述的問題不需要泛型也能解決,但泛型提供更方便高效的方式;既然這樣我們沒有理由不去採用她。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.