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