设计相关查询

时间:2012-11-14 19:47:46

标签: java oop

我正在设计一个应用程序,我必须读取用户给出的一个文件并计算操作总数。我可以通过两种方式来实现这一目标:

  1. 创建包含总操作的静态变量。这种方法的好处是,我需要根据总操作执行某些计算,我不需要一次又一次地调用函数,它将从文件中读取所有记录并计算操作次数。

    < / LI>
  2. 创建通过循环文件返回操作数的函数。

  3. 选项1在性能方面更好,但静态变量违反OOP原则。 如果对此问题有任何其他方法,并且我的理解是正确的,请告诉我。

    提前致谢。

3 个答案:

答案 0 :(得分:0)

您可以计算类型为_operationCounter的实例OperationCounter的方法中具有int类型属性的操作数。此实例本身是任何类的任何其他实例的属性(可能是几个)。为确保您只计算一次,OperationCounter提出两项操作:void makeCount( File in )int getCount()。糟糕的设计是计入int getCount()

答案 1 :(得分:0)

可能你应该把用户“crnlx”和你的第二个选项给出的建议放在一起。

有一个实例变量并将其值设置为函数返回的值。

因此,如果您的方法签名是public void int getNumOfOperations(File fileName);

您将执行以下操作。

int numOfOperations = getNumOfOperations();

这样您就可以在类中重复使用该变量,而无需再次调用该函数。

答案 2 :(得分:0)

这是一种“功能编程”技术,但我建议您使用签名编写函数:

int numberOfOperations(String line)
List<String> linesForFile(File file)

然后像:

int totalOperations = 0;
for(String line : linesForFile(file)){
  totalOperations += numberOfOperations(line);
}
return totalOperations;

这样,您可以轻松测试各个函数,而不是将“计数操作”的逻辑域与特定源(文件)等耦合。