Singleton: Difference between revisions
Jump to navigation
Jump to search
m (fix new line) |
No edit summary |
||
| Line 39: | Line 39: | ||
Original Author: Jusonex | Original Author: Jusonex | ||
== | '''Call class methods by newest instance''' | ||
==Code== | |||
<syntaxhighlight lang="lua"> | |||
-- DEFINE CLASS | |||
cTestClass = inherit(Singleton) | |||
function cTestClass:run() | |||
-- DO SOMETHING | |||
end | |||
cTestClass:getSingleton():run() | |||
</syntaxhighlight> | |||
==See Also== | ==See Also== | ||
{{Useful_Classes}} | {{Useful_Classes}} | ||
Revision as of 21:50, 12 October 2016
This class allows you to restrict the instantiation of a specific class to one object.
Requirements
sbx320's classLib, can be found Here[1]
Code
Singleton = {}
function Singleton:getSingleton(...)
if not self.ms_Instance then
self.ms_Instance = self:new(...)
end
return self.ms_Instance
end
function Singleton:new(...)
self.new = function() end
local inst = new(self, ...)
self.ms_Instance = inst
return inst
end
function Singleton:isInstantiated()
return self.ms_Instance ~= nil
end
function Singleton:virtual_destructor()
for k, v in pairs(super(self)) do
v.ms_Instance = nil
v.new = Singleton.new
end
end
Original Author: Jusonex
Call class methods by newest instance
Code
-- DEFINE CLASS cTestClass = inherit(Singleton) function cTestClass:run() -- DO SOMETHING end cTestClass:getSingleton():run()
See Also
- Singleton » This class allows to restrict the instantiation of a specific class to one object.
- CThread » This class represents a simple coroutine manager which can be used to limit method calls / loop.
- Importer » This class make easy to use exported functions.
- Observable » Observable variables. Call function on variable value change.
- MatrixPOP » This class allows to use simple matrix without using MTA's OOP functions