How to make plugable factory work with lua?
类数据如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | struct Base_data { public: Base_data(){ protocolname ="Base"; } string protocolname; }; class HttpData : public Base_data { public: HttpData(){ protocolname ="Http"; } }; |
班主任:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | class Base_Professor { public: void Process(Base_data &data) { std::map::const_iterator it = ListProfessor.find(data.protocolname); if(it == ListProfessor.end()) cout second->Do(data); } virtual void Do(Base_data &data){} virtual std::string GetProfessorname(){ return"Base"; } ~Base_Professor(){ std::map::const_iterator it; for(it = ListProfessor.begin(); it != ListProfessor.end(); ++it) delete it->second; } bool Register(Base_Professor *Professor){ std::map::const_iterator it = ListProfessor.find(Professor->GetProfessorname()); if(it != ListProfessor.end()) return false; ListProfessor.insert(std::make_pair(Professor->GetProfessorname(), Professor)); } private: std::map ListProfessor; }; class HttpProfessor : public Base_Professor { public: std::string GetProfessorname(){ return"Http"; } void Do(Base_data &data){ std::cout |
我可以通过继承基_教授添加新的协议并注册新的类,但在Lua中我没有理想的方法。你有什么理想的方法吗?
Lua不提供开箱即用的"类"。它还有其他的特点,有些不同。
但是,您可以使用其中一些功能(表和元表)来模拟类和继承功能。
如果您不想了解技术细节,可以使用一些已经构建的Lua库。
我自己创建了一个名为"中间类"的库,它提供了这个功能。你能在它的L中找到一本手册吗?VI Wiki页面。
除了"公共"和"私有"功能(所有功能都是"公共的"),这个库提供了您所需要的大部分功能。您可以在Lua用户wiki上找到其他库。