いくつかのモジュールで構成されるゲームがあります。
それらの1つはデータベースモジュールです。私はそれをそのようなものにしたい:
Database{
public:
save(&Object); //all my classes in the all modules inherit from Object
load(&Object);
};
そのモジュールを他のモジュールから独立させるための最良の方法は何でしょうか(他のモジュールはDatabase
使用中save
および関数でデータを保存しload
ます)?
私はいくつかの解決策を検討します:
- すべてのオブジェクトには、クラス(アナロジーからJava)
serialize()
から継承されるメソッドのようなものがあります。そのメソッドを使用して文字列を取得し、保存します。明らかな欠点は次のとおりです。すべてのオブジェクトは新しいメソッドを実装する必要があり、文字列を保存するのは最適ではありません(クラスの構造を知らない)。Object
Database
- すべてのクラスに対して「マニフェスト」を作成します(たとえば、に送信されるテキストファイルなど
Database
)。そのマニフェストは、クラスの構造が何であるかを説明します(たとえば、1つの文字列、2つのdouble、1つのまれな使用int)。欠点は柔軟性です。他のモジュールのクラスを変更すると、マニフェストに影響します。 - すべてのクラスには独自のメソッドとメソッド
save
があり、それらを使用します。すべてのクラスがデータベースタイプについて知っている必要があり、コード全体に分散されるのではなく、クラス内にある必要があるため、私はそれを望んでいません(そのようなモジュールを作成することが重要です)。load
Database
save
load
Database
Database
他のすべてのモジュールについて知っています(そしてすべてのオブジェクトを保存する方法を知っています)。ここでの悪い点は、多くの依存関係です。モジュールのいずれかを変更すると、に影響しDatabase
ます。
どちらがいいですか?それとももっと良いオプションがありますか?