我正在制作一个程序,该程序从我称为脚本的文件中获取输入。脚本只包含一系列信息。将来,我将需要每个脚本包含更多信息,因此我将每个脚本与一个版本号相关联。
任何脚本文件中的信息都可以完全包含在一个名为 EntityStatePdu 的特定类中(其细节对于这个问题并不重要)。因此,我决定开设以下课程:
1) 抽象类 Script
2) 类 ScriptV1 扩展 Script
3) 类 ScriptV2 扩展 Script
4) ...
我让每个脚本文件都以其版本信息开头。因此,版本 1 脚本以“scriptV1”开头,版本 2 脚本以“scriptV2”开头。我想将不同的脚本版本抽象到脚本类中。
因此,理想情况下,我希望在名为 FromFile 的 Script 类中有一个工厂方法,这样调用会Script.FromFile("scriptVersion1.txt")
返回一个有效的 ScriptV1 对象,而调用会Script.FromFile("scriptVersion2.txt")
返回一个有效的 ScriptV1 对象。我想要FromFile
读取文件的方法,通过查看文件的开头来确定它的版本,并实例化适当的 Script 子类。这将使该类的用户可以使用任何脚本文件,而与版本无关。
你将如何编写这个FromFile
工厂方法?你会建议一个不同的班级设计吗?某种设计模式?
谢谢!