我计划创建一个简单的机器人,但不想重做一次,如果它将来变得更复杂。所以我想知道我的方法将来是否会引起任何问题。如果有更好的解决方案/方法。
我打算做什么:
Communicator
类Ability
类,其中包含接收邮件和回复邮件的基本方法Ability
类与所有其他能力类一起继承Ability
类存储在主Communicator
类Communicator
收到消息时,它会通过调用Communicator
类中的方法将消息发送给该列表中的所有类以及该命令用于回复的类(发回消息)。 示例:
Greet
和Backflip
这种解决方案的规模如何?此外,其中一个主要目标是让其他人轻松实现自己的能力并将其纳入计划,类似于Hubot。
答案 0 :(得分:1)
从概念上讲,您所描述的内容与MVC不同......您的Ability
很好地映射到控制器并且回复映射到视图。您甚至可以选择像ASP.NET / MVC这样的MVC框架。
关于MVC的不同之处以及您所描述的是,通常某种路由器会将传入的命令路由到特定的控制器,而不是将消息广播到所有控制器。决定他们是否可以回应。您考虑的广播似乎有点过分......因为每个Ability
必须解析并决定回应。这带来了可扩展性问题......尤其是许多会话正在同时进行。
此外,如果您的世界变得庞大而复杂,多个Abilities
会做出响应,会发生什么?
在MVC中,路由器负责将输入中的模式映射到控制器中预先注册的或更可能的基于约定的操作。路由器将具有启发式(通常是第一次找到的胜利)来确定要调用哪个控制器。框架通常有各种自定义路由器的方法。
除非这只是一个有趣的事情,并且不会被征收高额税,否则你可以很好地调查某种类型的MVC框架来为你做肮脏的工作。