Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 此PowerBuilder stats生成代码是否适合面向对象?_Java_Ooad_Easerver - Fatal编程技术网

Java 此PowerBuilder stats生成代码是否适合面向对象?

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> 下面是我的课程的简化版本。(我创建了一

我正在重构一个用PowerBuilder和Java编写并在Sybase EA Server(Jaguar)上运行的现有应用程序。我正在构建一个小型框架,以围绕EA Server中可用的Jaguar API功能展开。其中一个类是使用
Monitoring
类从EA服务器获取运行时统计信息

<> >不涉及太多细节,监视< /C> >是EA服务器API中的一个类,提供Jabar运行时监控统计(实际类为C++;EA服务器提供java的包装器,以便通过CORBA访问)。p> 下面是我的课程的简化版本。(我创建了一个超类,我从中继承它来获取组件、连接缓存、HTTP等的统计信息)

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 */

    }
}