2008-09-17 15 views
0

私はVB6で書かれたアプリケーションのメンテナンスを任されています。それ以来、VB .NETにインポートされており、オブジェクト指向以外のコードはほとんどありません。このコードは、Public Shared属性(変数)とメソッド(関数)を何も含まないクラスで詰まっています。その結果、アプリケーションは一度に複数のプロジェクトを開くことを制限します。オブジェクト指向の更新アプローチ

プロジェクトは、一般的なプロジェクト設定を含むXMLファイルと、他のプロジェクト関連のデータを含むAccessデータベースの場所で構成されています。長年にわたり、XMLファイルの形式が変更され、更新およびバージョニング戦略が採用されました。選択した戦略は、古いバージョンに遭遇したときにいつでも更新を実行します。これまでの更新では、XMLファイル内のデータの並べ替えやデータベーススキーマの変更、XMLファイルからデータベースへのデータの移動のみで構成されていました。

OOPにかなりの背景があるので、プロジェクトは他のオブジェクトとやりとりする自己完結型オブジェクトである必要があります。しかし、私はOOPで選択した更新戦略を適用する方法を見落としています。

OOPで選択した更新戦略を実装する問題は、OOPをまだ使用していないままになっています。誰かがそのような仕事の経験がある場合、または進め方に関する勧告があれば、あなたが提供できる援助に感謝します。

答えて

1

XMLファイルを読み込むクラスを作成し、そのファイルのデータに基づいてプロパティ/メソッド/ etcを提供します。クラスがXMLファイルを書き戻すときは、新しいバージョンに必要な形式でフォーマットします。

基本的に、クラスは現在のバージョンとすべての古いバージョンで読み込むことができますが、常に新しいバージョンを書き出します。

データは、必要なときに毎回XMLファイルをスキャンするのではなく、クラスの内部変数で保持されます。

この場合、XMLファイルにVERSIONノードを追加することも役に立ちます。

+0

これは現時点で最良の解決策である可能性が高いと私は同意しますが、公開戦略の更新を放棄して保存戦略の更新を奨励しています。現時点では、保存時の更新は機能しますが、より多くのデータベース駆動型ソリューションに移行すると、ほとんどの場合十分ではありません。 –

0

「戦略」という言葉(戦略デザインパターン)を使用したときに、あなた自身の疑問に答えた可能性があります。おそらく

あなたはできます

  • 変換について何も知らないが、戦略オブジェクトを受け入れ、プロジェクトのクラスを作成します。
  • 考えられる各変換方法をモデル化するためのクラスの階層を作成します。
  • は正しい戦略
0

これは厄介な問題である理由私は理解していないと、プロジェクトのオブジェクトを構築するためにファクトリメソッドを使用します。それは任意の数の方法で解決することができます。

あなたはenterpriseyタイプのもの指向の完全なオブジェクトをしたい場合は、次のソリューションのいずれかのサブセットを取ることができるが:

  • は、他のオブジェクトがプロジェクトに をどのように相互作用するかを記述するインタフェースさらにiProjectを作成します。
  • の現在の実装を作成します。 を実装し、現在のバージョン を読み書きするプロジェクトです。
  • の バージョンを検出し ProjectFactoryを作成し、XMLと データベースメソッドを読み込み、これら クラスは余分enterpriseynessについて
  • をインスタンス化する際に コンストラクタ呼び出しの書き込みを有するオーバーライド、各過去 バージョンのプロジェクトを拡張そのファイルに正しいバージョンの がインストールされます。
  • さらにバージョンが必要な場合は、読み取り、書き込み を呼び出して、すべてをプロジェクト の新バージョンへのアクセス過去のプロジェクトとして 同じこと、 を行うには、現在のプロジェクトを書き換える 。

このソリューションの利点は、さまざまなバージョンで蛇行し続けることができ、新しいバージョンごとに以前のバージョンからの更新が可能で、以前のすべてのバージョンが2番目のバージョンから最後のバージョン。

関連する問題