服务定位器
它一般被认为是和“依赖注入”设计模式形成相反操作的设计模式。一般需要提供一系列的服务接口、注册服务接口的实现类、在需要时再实例化服务实现,并考虑缓存实现。比如安卓中getSystemService()
。
它被认为是足够简单、对小型应用友好的。缺点在于它隐秘了服务之间的依赖关系,另外从测试、对某切面测试时也比“依赖注入”更加困难。
但无论如何,这两种方式都十分常见,以至于有时候会忽略认为它是设计模式的一种。
Jdk6提供了ServiceProviderInterface,借助在jar文件中提供额外的元数据,来建立服务和实现类的映射关系。这提供了一种简单的此设计模式的实现机制。
拓展阅读
- Service Locator Pattern and Java Implementation
- “Java” section