2013-10-13 2 views
4

자바 컬렉션 및 구아바와 함께 광범위하게 제네릭을 사용합니다. API를 사용할 때 상당히 잘 이해 :Java generics로 패턴 및 API 디자인 찾기

  1. PECS 규칙
  2. {공동, 콘트라에서} 분산
  3. 와일드 카드
  4. 경계로 제네릭 그러나

을, 나는 그것이 어려운 찾을 수 제네릭을 사용하여 API를 제공합니다. Java generics의 디자인 패턴이 있습니까? 또는 Java generics에 대한 참조가 도움이됩니다. 내가 읽은 :

  1. 효과적인 자바
  2. 이 책은 '자바 제네릭과 컬렉션'을
  3. http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

내가 제네릭 유용 두 패턴을 잘 알고 :

  1. 봉쇄 개념 : Java 모음, 구아바 Optional<T>
  2. 유형 파라미터 : 구아바 Predicate<T>Function<T>
+0

효과적인 Java를 읽은 경우 Yoda가 말했듯이 "더 이상의 교육은 필요하지 않습니다. 필요한 지식을 이미 알고 있습니다." – Vidya

답변

1

대부분의 표준 디자인 패턴은 상속 및 구성 표준 OO에 내재 된 임시 다형성에 대한 있습니다. generics는 매개 변수형 다형성에 관한 것입니다. 두 번째 "패턴"은 기본적으로 전체 개념을 포함하므로 패턴이라고 부릅니다.

그래서 매개 변수 패턴은 무엇입니까?

대금업자 패턴은 어떻습니까? 어떤 유형의 자원이 빌려주거나 빌리는지 중요하지 않으므로 일반적인 매개 변수가 될 수 있습니다.

공장은 제네릭을 사용하여 표현할 수도 있습니다. 생성되는 인스턴스의 유형은 매개 변수입니다.

일반적으로 기능 또는 콜백 객체는 무효화되고 T - 되돌림 효과가 있습니다.

당신이 요구하는 추상화 수준입니까?

나는 더 많은 것을 생각해 낼 때이 답을 계속 편집 할 것입니다.

는 지금까지 API를 가서, 엄지 손가락의 제 규칙이 extends 또는 super이 적합한 지 결정하는 분산을 사용하여 메소드 인자에 기본적으로 가능한 한 많은 와일드 카드를 의미 시도하고 가능한 가장 광대 한 유형을 수용하는 것입니다 및 반환 가능한 가장 구체적인 유형, 가능한 한 적은 유형 변수 또는 와일드 카드를 의미합니다.

+0

좋은 답변입니다. 예, 이것이 제가 기대했던 것입니다. 예를 제공하거나 참조 할 수있는 경우 유용합니다 (예 : Lender 패턴은 구아바의 Supplier 과 동일합니다.). 예를 들어 엄지 법칙의 이점을 설명 할 수 있습니까? –