有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

根据作为参数传递的标志执行各种操作的java设计模式

为了学习新技术,我想创建一个生成数理统计的简单实用程序应用程序。该实用程序可以执行多种操作,比如现在有3种操作:

utility.sum(); utility.geometricMean(); utility.arithmeticMean();

用户可以请求从上面生成3个统计信息,具体取决于他在执行应用程序时指定的标志

-s -gm -am

关键是用户可以选择N个统计信息的任意组合,所以当他使用-s -am标志运行应用程序时,应用程序应该执行utility.sum(); utility.arithmeticMean();方法

我想知道,什么是优雅的设计(可能使用设计模式?)这样的模块,符合所有干净的代码,干净的设计和坚实的原则

标志可以用最适合解决方案的方式表示——布尔、整数、枚举——这对我来说并不重要

编辑:正如Fisherman先生所建议的,用命令实现数学运算本身是个好主意,但我最关心的是如何根据传递的标志创建这些命令。有没有办法避免做下面的事情

if(flag == '-am') commands.add(new ArithmeticMeanCommand());
else if(flag == '-gm') commands.add(new GeometricMeanCommand());
else if(flag == '-s') commands.add(new CalculateSumCommand());

共 (2) 个答案

  1. # 1 楼答案

    我认为一个简单的switch语句就可以做到这一点。在参数中,您可以将标志和案例映射传递到要调用的方法

  2. # 2 楼答案

    我认为你可以使用Command:https://en.wikipedia.org/wiki/Command_pattern并将每个动作放在单独的类中,如geometricMeanCommand、arithmetricMeanCommand等。但在你的问题中,正如我们删除答案的朋友所说,你可以使用简单的switch语句。您还可以使用Facade设计模式https://en.wikipedia.org/wiki/Facade_pattern,并将几个方法共享到主方法中(在内部,您将能够以不同的方式组合它们)