根据用户输入构建图表

时间:2017-02-17 16:30:18

标签: c# asp.net-mvc plot architecture

我正在构建一个ASP.NET MVC应用程序,用户可以在其中设计问题,而问题可能包含图形。但是,图表不会保存为图像,但会以文本格式描述,因为它们可能包含应用程序评估的变量。

一个示例问题可能是:

  

下一个功能的斜率是多少? &安培;&安培;多项式-5 5 -5 5 2 1&&&

现在,只要应用程序显示问题,它就会查找特殊文本(包含在"&&"),在这种情况下,意味着:构建图表,x轴运行从-5到5,y轴从-5到5,并绘制多项式y = 2x + 1.

现在,这很有效。我有一种工厂读取第一个单词(" Polynomial")并创建PolynomialChart类的新实例(继承自Chart),将所有其他信息作为构造函数参数传递。另一个例子是

  

&安培;&安培; VerticalLine -5 5 -5 5 1&&

哪会产生VerticalLineChart的instanco。

然而,我意识到,用户通常会想要添加新约束,例如:"不要显示情节的网格",所以我会设计一个看起来像这样的命令:

  

&安培;&安培; PolynomialNoGrid -5 5 -5 5 2 1&&&

并且会实现一个名为PolynomialNoGridChart的新类,并且该过程将是相同的。

我意识到这不是可扩展的,因为每个图表中的每个小差异都会迫使我构建新的类。我一直在考虑改变命令的结构以包含不同的属性,例如

  

&安培;&安培;多项式-5 5 -5 5网格:假2 1&&

但我不喜欢这种样子;让我觉得在尝试解析命令时会使事情变得复杂。我一直在考虑的另一个选择是使用XML格式:

<chart minx="-5" maxx="5" miny="-5" maxy="5" grid="false" >
     <polynomial coefs="2,1" \>
     <polynomial coefs="3,1" domain-start="4" \>
     <verticalline x="2" \>
<\chart>

这清楚地给了我一种以有条理的方式描述对象的方法,而且,它给了我一种包含几个图的方法,这是另一种图形(目前是MultiPolynomialChart)

我的问题是:我是否正确地解决了问题?好像我可能会过度复杂化。另外,我是否应该遵循分析suxh XML文件并处理它们的模式?

0 个答案:

没有答案