LUA模拟面向对象:类与对象

993 词

首先还是向大家介绍一下国产LUA框架Vanilla。
这次我们来看看Vanilla中如何用Lua 模拟面向对象编程。实现主要是使用lua的setemetatable特性来实现的。下面程序大体的处理流程是:

类和对象创建流程:
1.创建一个Controller在类模板程序。
2.在Controller:new方法里,创建返回一个实例对象instance(lua table),对象使用Controller的函数接口,做为对象实例产生的“类”模板。
3.使用new方法的形参,传递新建立对象的属性数据,成员变量。

[code]
local Controller = {}

function Controller:new(app_config, tst_val)
local instance = {
app_config = app_config,
tst_val = tst_val
}
setmetatable(instance, {__index = self})
return instance
end

function Controller:display(view_tpl, values)
end

function Controller:getTestField()
return self.tst_val
end

return Controller
[/code]

测试类文件的流程:
1.用require引入contorller类定义文件。
2.创建对象初始化要使用的数据结构:config, val。
3.调用Controller类模板的new方法,创建新的对象实例,传入需要形参。
4.使用新创建的对象实例的getTestFiled()接口方法,返回我们在第三步传入的测试字符串:“test value”
5.输出返回值,确认是否与传入的数据一致。

[code]
Controller = require “controller”

local config = { ip=“127.0.0.1”, port=“8080” }
local val = “test value”

local obj_instance = Controller:new(config, val)
local ret = obj_instance:getTestField()
print(ret)

[/code]

作者:糖果

PS:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。

https://github.com/idevz/vanilla