Lua——实现依赖注入

-- GlobalBinder.lua
GlobalBinder = {}
function GlobalBinder._injectTest()
      return 5
end

-- functions.lua
function binder(binderTable)
    local b = class("Binder")
    binderTable = binderTable or GlobalBinder
    setmetatable(b, {__index = function(t,k)
          if binderTable[k] then
              local res = binderTable[k]()
              t[k] = res  -- 缓存起来,不然每次都要返回值
              return res
          end
    end})
    return b
end

-- testBinder.lua
local testBinder = class("TestBinder", binder())
function testBinder:ctor()
     print(self._injectTest)   -->  5
end
return testBinder
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容