简介:
容器(container)技术(可以理解为全局的工厂方法), 已经是现代项目的标配. 基于容器, 可以进一步实现控制反转, 依赖注入....所谓”双容器策略”, 总结如下:
同时运行 “进程级容器” 与 “请求级容器”
“进程级容器” :
传统的IoC 容器, 例如 Illuminate/container
“请求级容器” :
所有工厂方法注册到容器的静态属性上...常见的解决策略
由于 Laravel 等使用了IoC 容器的项目能带来极好的工程体验, 而Swoole 能带来极大的性能提升, 于是有许多试图结合两者的项目, 都面临了 “请求隔离问题”....我个人看到过的解决策略有以下三种, 都能一定程度解决问题, 但也有美中不足之处.
克隆策略:
要递归地 clone 属性, 才能避免浅拷贝导致的污染
无法区分进程共享的单例, 和请求隔离的单例....是不依赖大型项目的.