尝试在C#中实现简单的电子表格程序时遇到了以下问题。
我要做的是拥有一个Table
类,它基本上是类Cell
的对象数组。但是,我想实现一个单独的Parser
类,它将接受所有用户输入。然而Parser
类的方法需要访问表格的单元格。我不确定应该如何实施。
或许可以通过代码更好地解释:
class Cell
{
//fields
}
class Table
{
private Cell[,] cells;
public Cell At(int key);
}
static class Parser
{
public static Cell GetCellReference(string userInput)
{
//somehow
//return Table.At(parsedUserInput)
}
}
我看到实现这一点的一种方法是在Table
内实例化一个Parser
对象,但这显然违背了解析器类本身的目的。我看到的另一种方法是将Table
对象传递给Parser
的方法,但这似乎并不合理,因为其目的是只使用一个Table
实例。继承似乎不适用于解析器和表之间,因此我发现自己陷入困境。如何在不违反OOP基本原则的情况下更改/修改设计以实现目标?
答案 0 :(得分:1)
我会
public class Parser
{
public Parser(Table table){..}
public ReturnType DoIt(....) {...}
}
然后
var parser = new Parser(myTable);
var res = parser.DoIt(widgetWoo, bar33);
如果您希望PArser是静态的,那么执行
public static class Parser
{
public ReturnType Parse(Table table,.....){..}
}
然后
var res = Parser.Parse(myTable, widgetWoo, bar33);
然而,我觉得Parser会有很多内部状态。最好是非静态的