Java的;运行时解释;添加插件的策略
作者:互联网
我开始着手我的第一个大项目了.它将是一个非常类似于Rosetta Stone的程序.它将是一个程序,用于学习外语,使用Swing用Java编写.在我的计划中,我计划用户能够选择下载的课程来学习.因为我是母语为英语的人,所以我将能够创建一门英语课程.但是,我希望说其他语言的人能够编写课程供用户使用(这是我的课程工作的重要部分).
由于我希望用户能够下载他们想要的语言课程,因此将其硬编码到程序中是不可能的.需要在运行时解释课程.此外,由于我希望其他人与我的工作合作(即制作课程),我需要让他们这么做.
这样做最好的方法是什么?
我想出的想法是有一个严格的空课程大纲(硬编码)和一个简单的xml文件,详细说明了要使用的文本和声音.这样做的缺点是它极大地限制了作者.不同的语言可能需要从学习不同的部分开始.
对于手头的问题以及整个项目的任何建议将不胜感激.任何相关资源或信息的链接也将不胜感激.
想想你的时间和精力,
约瑟夫庞德
解决方法:
如果您从头开始这样做(Will的想法还不错),我要做的是首先放下最容易创建语言课程的文件格式.它可以是XML,纯文本或其他格式你想出了自己.
您可能需要一些语言格式的灵活性,因为您希望能够实际指定诸如问题和答案之类的内容.由于所有额外的终结符,XML是一种痛苦,但它提供了大量的元数据.如果您喜欢XML,可以考虑使用YML定义语言文件,它会为您提供XML数据,但使用空格描述符而不是尖括号.
您可能还希望使用其创建的语言定义文件,因此您可能希望也可能不希望将英语单词作为键.如果您不想要任何英语,您可能必须跳过XML和YML并提出自己的文件格式 – 可能在布局和/或特殊符号定义流和“功能”的地方.
一旦定义了文件格式,您就不必担心硬编码任何东西……您将无法进行硬编码,因为它已经存在于文件中.
插件功能也很不错……这是您的定义文件还包含信息,告诉您要实例化(反射性地)和用于解析/显示数据的类.通过这种方式,您可以通过提供新的jar文件来添加新类型的问题.
如果这令人困惑,抱歉,这在单向论坛中很难,因为我无法看到你的脸,看看你是否跟着我,或者我是否朝着正确的方向前进.如果您认为我走在正确的轨道上并想要更多详细信息(我之前已做过一些这样的事情),请随时在评论中留下后续问题(或电子邮件地址),我会很高兴与你进一步讨论.
标签:extensible,java,interpreter 来源: https://codeday.me/bug/20190730/1584316.html