在web开发中,服务定位器模式是一种非常贴合的模式。服务定位器模式目的是为了服务提供者和服务使用者的解耦。在我们的框架中,可以把Component类看做是所有服务的基类。我们把web应用作为一个服务定位器,在web应用中,我们可以动态挂载和删除服务。
要实现一个服务定位器,我们必须实现下列功能:
属性:
1.保存服务实例的数据结构:
$serviceMap
[
'serviceName' => 'serviceInstance/callback'
]
2.保存服务定义的数据结构:
$defineMap
[
'serviceName' => 'array/object/callback'
]
方法:
1.注册服务
2.删除服务
3.解析并获取服务,这里要使用DI容器的功能
4.提供以对象属性的方式获取服务的功能
ok,今儿个先到这,欲知后事如何,且听下回分解……
github源码:https://github.com/2lovecode/tank