BeeHive
BeeHive copied to clipboard
是否考虑引入相应的DI框架?
目前的实现里只能通过createService
拿到protocol
的实现实例,里面只会调用init
或者shareInstance
。
未来会不会考虑引入类似 https://github.com/appsquickly/Typhoon 这样的DI框架丰满下注入功能?
或者说有没有更好的办法来注入参数?目前看起来只能暴露property来设置,或者额外提供一个手动调用的注入方法?
一个设想是提供一个createService:configuration:
方法,在实现类中提供一个宏定义注入点,在configuration中设置注入。
不错的想法,欢迎pull request
@xilin 我最近在将 Beehive 也注意到这个问题,是个缺陷,但是也可以通过一个单独的 service 对象来将工厂方法的逻辑放进去。 我自己这边目前在用 objection 作为 BeeHive 的 Service 的替代,相当于 BeeHive 只要 Module 部分,Service 部分就直接用依赖注入框架处理了
@xilin 我想解决你说的问题可以分为三部: 1、给ServiceManager增加类似于createService:configuration:的方法,使调用环境可以传递给ServiceManager对应的Servive初始化环境context; 2、给ServiceProtocol基础协议增加类似于setupWithContext:的方法,由createService:configuration:完成Service实例化之后,测试Service是否支持context条件初始化方法,如果支持协议方法,调用setupWithContext:,把外部调用的context传递给Service的协议方法。 3、具体实现Service协议接口的实体类,如果支持初始化参数,则实现setupWithContext:方法,接受参数context,并且按照context进行条件初始化。 @SoXeon 你们会接受这样的PR吗?我觉得我可以补充一下这个功能,然后PR。 :)
@MemoryReload 我觉得你这个方案比较轻量,可以很快的增加这个功能
@SuperMarioBean 感谢分享思路,的确可以这样用BeeHive哈