首页 > 代码库 > Service Locator Patten 总结
Service Locator Patten 总结
原网址将会不断更新 : 作程的技术博客 《Service Locator Patten 总结》 it.zuocheng.net http://www.zuocheng.net/it
核心思想
将构建依赖的接口彻底与依赖者分离,并将此依赖作为“服务”绑定到一个标识符,而后依赖者则可通过这个标识符获取被绑定的依赖。
优点
- 上层逻辑不依赖于服务接口的具体实现,实现解耦
- 提高系统的可扩展性
- 逻辑分层更加简洁清晰,使不同层次的开发人员各司其职,提高团队开发效率
适用场景
与 (Abstract) Factory Patten 比较
- Factory Patten 创建的所有结果对象多有统一的抽象接口的(更具一般性的)对象
- Service Locator Patten 创建的服务,异构性程度比较大,接口缺少一般性
- Factory Patten 单纯为创建对象
- Service Locator Patten 职能更多些,包括创建服务、配置服务、注入服务的依赖等等
与 Dependence Injection Container 配合
- Service Locator Patten 和 Dependence Injection并不互斥
- Service Locator Patten 在定位服务时,创建服务、配置服务、注入服务的依赖通过Dependence Injection Container实现,可以进一步解耦
与 Proxy Patten 配合
- 对创建的服务进行抽象,增强服务的一般性(即抽象出统一接口)
与 Singleton Patten 配合
- 承担特定职责的Service Locator的对象无需多次实例化,节省开销
- 对Service Locator定位的服务缓存做集中存储,存储数据结构存于Service Locator的单例对象即可
优化和扩展
- 与多种设计模式配合使用
- 在Service Locator类里定义服务实例化对象的缓冲池,使服务只实例化1次,节省开销
代码示例
- Yii 2 框架 Service Locator
Service Locator Patten 总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。