我正在创建一个程序,从我调用脚本的文件中获取输入。脚本只包含一系列信息。将来,我将需要每个脚本包含更多信息,因此我将每个脚本与版本号相关联。
任何脚本文件中的信息可以完全包含在名为EntityStatePdu的特定类中(其详细信息对此问题并不重要)。所以,我决定做以下课程:
1)抽象类脚本
2)类ScriptV1扩展脚本
3)类ScriptV2扩展脚本
4)......
我让每个脚本文件都以其版本信息开头。因此,版本1脚本以“scriptV1”开头,而版本2脚本以“scriptV2”开头。我想将不同的脚本版本抽象到脚本类中。
因此,理想情况下,我想在Script类中使用一个名为FromFile的工厂方法,这样调用Script.FromFile("scriptVersion1.txt")
将返回一个有效的ScriptV1对象,并且调用Script.FromFile("scriptVersion2.txt")
将返回一个有效的ScriptV1对象。我希望FromFile
方法读取文件,通过查看文件的开头来确定它的版本,并实例化相应的Script子类。这将允许该类的用户使用任何脚本文件,与版本无关。
您将如何编写此FromFile
工厂方法?你会建议一个不同的课堂设计吗?某种设计模式?
谢谢!
答案 0 :(得分:0)
向Script类添加一个静态变量,以包含从字符串(例如“scriptV1”)到相应类的实例的映射。在FromFile方法中,提取字符串,在地图中查找,克隆实例并返回它。作为初始化阶段,子类需要在相应字符串下的映射中注册自己的实例。