One way to do this is you could implement the modules as event listeners to the interface. When net events are received, the interface broadcasts messages to these listening modules.
Lua doesn’t have interface like that in Java or other languages. There isn’t even a class, although there are various libraries to help implementing class-like code: http://lua-users.org/wiki/ObjectOrientedProgramming
If you haven’t already read up on Programming in Lua (http://amzn.com/859037985X), you can read the first edition online, this chapter on “class”:
Lua is simple and efficient, and you just have to “think different” in structuring your code. There’s no need to implement what the interface dictates as there’s no contract in that sense.
Passing a function reference is what I’d do for simple callbacks.
Yes, the event dispatcher broadcasts messages to multiple listeners if they’re registered for the event. Also, multiple parameters can be passed and the listener can access other properties not available in the simple callback.
One way to do this is you could implement the modules as event listeners to the interface. When net events are received, the interface broadcasts messages to these listening modules.