Java 此PowerBuilder stats生成代码是否适合面向对象?
我正在重构一个用PowerBuilder和Java编写并在Sybase EA Server(Jaguar)上运行的现有应用程序。我正在构建一个小型框架,以围绕EA Server中可用的Jaguar API功能展开。其中一个类是使用Java 此PowerBuilder stats生成代码是否适合面向对象?,java,ooad,easerver,Java,Ooad,Easerver,我正在重构一个用PowerBuilder和Java编写并在Sybase EA Server(Jaguar)上运行的现有应用程序。我正在构建一个小型框架,以围绕EA Server中可用的Jaguar API功能展开。其中一个类是使用Monitoring类从EA服务器获取运行时统计信息 >不涉及太多细节,监视< /C> >是EA服务器API中的一个类,提供Jabar运行时监控统计(实际类为C++;EA服务器提供java的包装器,以便通过CORBA访问)。p> 下面是我的课程的简化版本。(我创建了一
Monitoring
类从EA服务器获取运行时统计信息
<> >不涉及太多细节,data=jm.monitor
是对Jaguar API的调用。它接受实体的类型、实体的名称以及我们想要的统计数据的键。此方法返回一个双数组。我继续打印格式化输出中的标题和数据
这个程序可以运行,但我想听听专家们对OO设计方面的意见。首先,我希望能够定制
printStats
,以便能够以不同的格式打印(例如,完整的报告或一行)。除此之外,我还考虑在网页或PowerBuilder屏幕上显示统计数据,在这种情况下,printStats甚至可能不相关。您将如何以真正的面向对象的方式实现这一点?嗯,这很简单。不要打印这个类的统计数据。归还它们。并让调用方决定如何显示返回的统计信息
现在您可以获得统计信息了,您可以创建一个
OneLinerStatsSprinter
、一个DetailedStatsPrinter
、一个HtmlStatsFormatter
,或者您想要的任何东西。嗯,这很简单。不要打印这个类的统计数据。归还它们。并让调用方决定如何显示返回的统计信息
现在您可以获得统计信息了,您可以创建一个
OneLinerStatsSprinter
、一个DetailedStatsPrinter
、一个HtmlStatsFormatter
,或者您想要的任何东西。哇,真是太快了!!。我真的很感谢你的反馈。由于我在这里要返回多个数组(实际上是头、子头、数据),您将如何将所有这些返回给调用者?我确实看到了一些将它们作为对象数组返回的建议,但我只是想让它在这里适用。再次感谢@Michael感谢您的编辑。创建一个类,该类包含您想要返回的所有信息,以结构化方式存储,并提供必要的访问器,然后返回该类的实例。您可能应该创建一个类,该类包含JB所说的打印机可以理解的结构中的统计信息。您还可以将“StatsPrinter”接口传递给dumpStats方法,并让它调用其中的一些printStats方法。在这两种情况下,我认为为统计数据定义一个类是有意义的。哇,真是太快了!!。我真的很感谢你的反馈。由于我在这里要返回多个数组(实际上是头、子头、数据),您将如何将所有这些返回给调用者?我确实看到了一些将它们作为对象数组返回的建议,但我只是想让它在这里适用。再次感谢@Michael感谢您的编辑。创建一个类,该类包含您想要返回的所有信息,以结构化方式存储,并提供必要的访问器,然后返回该类的实例。您可能应该创建一个类,该类包含JB所说的打印机可以理解的结构中的统计信息。您还可以将“StatsPrinter”接口传递给dumpStats方法,并让它调用其中的一些printStats方法。在这两种情况下,我认为为stats定义一个类是有意义的。
public class JagMonCompStats {
...
public void dumpStats(String type, String entity) {
private String type = "Component";
private String entity = "web_business_rules";
private String[] header = {"Active", "Pooled", "invoke"};
// This has a lot more keys, simplified for this discussion
private static short[] compKeys = {
(short) (MONITOR_COMPONENT_ACTIVE.value),
(short) (MONITOR_COMPONENT_POOLED.value),
(short) (MONITOR_COMPONENT_INVOKE.value)
};
private double[] data = null;
...
/* Call to Jaguar API */
Monitoring jm = MonitoringHelper.narrow(session.create("Jaguar/Monitoring"));
data = jm.monitor(type, entity, keys);
...
printStats(entity, header, data);
...
}
protected void printStats(String entityName, String[] header, double[] data) {
/* print the header and print data in a formatted way */
}
}