我正在重构一个用 PowerBuilder 和 Java 编写并在 Sybase EA Server (Jaguar) 上运行的现有应用程序。我正在构建一个小框架来包装 EA 服务器中可用的 Jaguar API 函数。其中一个类是使用该类从 EA 服务器获取运行时统计信息Monitoring
。
无需过多详细介绍,Monitoring
是 EA Server API 中的一个类,它提供 Jaguar Runtime Monitoring 统计信息(实际类在 C++ 中;EA Server 在 Java 中为这些提供了一个包装器,因此可以通过 CORBA 访问它们)。
以下是我的课程的简化版本。(我创建了一个超类,我从它继承来获取组件、连接缓存、HTTP 等的统计信息)。
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 */
}
}
该行data = jm.monitor
是对 Jaguar API 的调用。它需要实体的类型、实体的名称以及我们想要的统计信息的键。此方法返回一个双精度数组。我继续在格式化输出中打印标题和数据。
该程序有效,但我想获得专家对 OO 设计方面的意见。一方面,我希望能够进行定制printStats
,以便能够以不同的格式打印(例如,完整的报告或单行)。除此之外,我还考虑在网页或 PowerBuilder 屏幕上显示统计信息,在这种情况下 printStats 甚至可能不相关。您将如何以真正的 OO 方式做到这一点?