使用plantUML绘制类图 --- spi

文章目录

JDK SPI

在这里插入图片描述

@startuml

note top of ServiceLoader
  
end note
class ServiceLoader implements Iterable{
	- String PREFIX'META-INF/services/'
	- Class service
	- ClassLoader loader
	- LinkedHashMap<String,S> providers
	- LazyIterator lookupIterator
	- ServiceLoader(Class<?> svc, ClassLoader cl)
	+ <?> ServiceLoader<?> load(Class<?> service)
	+ <?> ServiceLoader<?> load(Class<?> service,ClassLoader loader)
	- Iterator<String> parse(Class<?> service, URL u)
	- int parseLine(Class<?> service, URL u, BufferedReader r, int lc,List<String> names)
}

ServiceLoader +-- LazyIterator
note top of LazyIterator
  核心方法: S next() && boolean hasNextService()
  nextService() 中调用 providers.put(cn, p)

end note
class LazyIterator implements Iterable{
	# Class<?> service
    # ClassLoader loader
    # Enumeration<URL> configs
    # Iterator<String> pending
    # String nextName
	+ ? next()
	- ? nextService()
	+ boolean hasNext()
	- boolean hasNextService()
}

interface Iterable{}
@enduml

猜你喜欢

转载自blog.csdn.net/m0_37111373/article/details/115302527
SPI