title: Service provider design pattern
body: <p>I am looking for some explanation or reference info on the service provider design pattern as i came across this while studying the Grapht @defaultImplementation code (<a href="http://grepcode.com/file/repo1.maven.org/maven2/org.grouplens.grapht/grapht/0.5.0/org/grouplens/grapht/annotation/DefaultImplementation.java" rel="noreferrer">http://grepcode.com/file/repo1.maven.org/maven2/org.grouplens.grapht/grapht/0.5.0/org/grouplens/grapht/annotation/DefaultImplementation.java</a>)</p>
  
  <p>This annotation is used with annotations in the LensKit implementation as in 28:57 of this video: <a href="https://www.youtube.com/watch?v=ug_JfORWK7w" rel="noreferrer">https://www.youtube.com/watch?v=ug_JfORWK7w</a></p>
  
  <p>I am looking for explanation or references to learn &amp; understand the utility of this design pattern. </p>
  
  <p>Please advise</p>
  
  <p>Thanks</p>