0

PowerBuilder と Java で記述され、Sybase EA Server (Jaguar) で実行される既存のアプリケーションのリファクタリングに取り組んでいます。EA Server で利用可能な Jaguar API 関数をラップする小さなフレームワークを構築しています。クラスの 1 つは、クラスを使用して EA Server からランタイム統計を取得することMonitoringです。

詳細は説明しませんMonitoringが、Jaguar ランタイム モニタリングの統計情報を提供する EA Server API のクラスです (実際のクラスは 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 への呼び出しです。エンティティのタイプ、エンティティの名前、および必要な統計のキーを取ります。このメソッドは double 配列を返します。ヘッダーとデータを書式設定された出力に出力します。

プログラムは動作しますが、OO 設計の側面について専門家の意見を求めたいと思います。printStats1つには、さまざまな形式 (完全なレポートやワンライナーなど) で印刷できるようにカスタマイズできるようにしたいと考えています。これとは別に、統計を Web ページまたは PowerBuilder 画面に表示することも考えています。その場合、printStats は関係ないかもしれません。これを実際のOOの方法でどのように行いますか?

4

1 に答える 1

5

まあ、それは非常に簡単です。このクラスから統計を出力ないでください。それらを返します。また、返された統計情報をどのように表示するかは呼び出し元に決定させます。

統計を取得できるようになったので、 、 、 、または何でも好きなものを作成OneLinerStatsPrinterできDetailedStatsPrinterますHtmlStatsFormatter

于 2013-01-05T22:27:10.180 に答える