什么是 SAP Spartacus FacadeFactoryService 中的 Resolver
這個 resolver 只針對 Proxy Facade,根據(jù) feature 名稱和 FacadeClass,獲取對應(yīng)的 resolver. 該 resolver 知道怎樣將函數(shù)調(diào)用,投遞到該 facade 的具體實現(xiàn)類去。
featureName:cartQuickOrderCore
最后得到實際值:cartQuickOrder
返回 resolver 的邏輯放在一個 defer 函數(shù)塊里了:
當(dāng)應(yīng)用程序開始調(diào)用 facade 的方法時,被投遞到代理類:
此時 resolver$ 包含的一大段在 defer 里的邏輯始終未得到執(zhí)行。
所以,從語義上說,resolver 解析出來的對象,就是該 facade 真實的實現(xiàn)類?這個 connect 應(yīng)該相當(dāng)于 subscribe 方法。
果然,connect 方法會觸發(fā) defer 塊內(nèi)的函數(shù)調(diào)用:
觸發(fā) core module 延遲加載:
加載完 QuickOrderModule 之后,從 ModuleRef 里拿到 injector,再調(diào)用這個 module 的 injector,拿到 facadeClass 對應(yīng)的實現(xiàn)類:
大功告成,拿到實現(xiàn)類 QuickOrderService 了:
此時就可以調(diào)用該實現(xiàn)類的方法了:
總結(jié)
Resolver 負責(zé)觸發(fā) Proxy Facade 對應(yīng)的具體實現(xiàn)類的延遲加載,加載完成后,從 Module Ref 里拿到 injector,再使用 injector 拿到 Proxy Facade 的具體實現(xiàn)類的實例。
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的什么是 SAP Spartacus FacadeFactoryService 中的 Resolver的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 电商云 Spartacus UI
- 下一篇: SAP 电商云 Spartacus UI