从文件中读取子类

时间:2012-05-09 01:30:48

标签: oop design-patterns polymorphism factory

我正在创建一个程序,从我调用脚本的文件中获取输入。脚本只包含一系列信息。将来,我将需要每个脚本包含更多信息,因此我将每个脚本与版本号相关联。

任何脚本文件中的信息可以完全包含在名为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工厂方法?你会建议一个不同的课堂设计吗?某种设计模式?

谢谢!

1 个答案:

答案 0 :(得分:0)

向Script类添加一个静态变量,以包含从字符串(例如“scriptV1”)到相应类的实例的映射。在FromFile方法中,提取字符串,在地图中查找,克隆实例并返回它。作为初始化阶段,子类需要在相应字符串下的映射中注册自己的实例。