情人节乃浮云——再谈单例对象的Lua实现

        之前发了篇有失水准的文章,声称可以用文中的方法实现lua单例对象。

        确实可以现实,但是太ugly了,体现不出lua之美,还附带命名污染。百科了下FP,遂想出一种更优雅的实现方案:

 


        运用闭包,得出更优雅的实现方式。

 

        通过元表实现的OOP,没法实现封装,所以new是私有方法只能靠程序员自觉了……

        题外话:欲实现封装的OOP,只能通过闭包的方式实现,《Lua程序设计》中对此略有论及,但此方式不为作者所推荐,原因不明。以笔者猜测,大概是因为其无法共享类的方法,每个对象都有类的全部数据,方法的拷贝。

你可能感兴趣的:(lua)