簡體   English   中英

使用Java泛型尋找模式和API設計

[英]Looking for patterns and API design with Java generics

我在使用Java集合和Guava時非常廣泛地使用泛型。 使用API​​時我理解得很好:

  1. PECS規則
  2. {co,contra,in} variance
  3. 通配符
  4. 有界泛型

但是,我發現很難使用泛型來提供API。 是否存在Java泛型的設計模式? 或者對Java泛型的任何引用也會有所幫助。 我讀了:

  1. 有效的Java
  2. “Java Generics and Collections”一書
  3. http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

我熟悉泛型有用的兩種模式:

  1. 遏制概念:Java集合,Guava Optional<T>等。
  2. 類型參數化:Guava Predicate<T>Function<T>

大多數標准設計模式都是關於具有繼承和組成的標准OO中固有的ad-hoc多態性。 泛型是關於參數多態的。 你的第二個“模式”基本上包含了整個概念,所以我不會稱之為模式。

那么參數模式是什么?

貸方模式怎么樣? 借出或借用什么類型的資源並不重要,因此這可以是一個通用參數。

工廠也可以使用泛型來表達。 生成的實例類型是一個參數。

功能或回調對象通常具有無效和T回歸的味道。

這是你要求的抽象級別嗎?

當我想出更多時,我會繼續編輯這個答案。

就API而言,我的經驗法則是嘗試接受可能最廣泛的類型,意味着在方法參數中盡可能多地使用通配符,使用方差來決定是否適合extendssuper ,並返回最具體的類型可能,意味着盡可能少的類型變量或通配符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM