私はデータソースを必要とする非常に単純なアプリケーションを持っています。現在はフラットファイルですが、後でデータベースに変更されます。ここで継承またはインターフェースの使用について意見が必要です。どちらが良いのか、そしてその理由は?私の意見では、インターフェイスは柔軟であるため使用していますが、データソースを抽象クラスとして作成することもできます。
6 に答える
すべての実装がアクセスする必要のある共通の機能がある抽象クラスを使用します。ここでは、データベースとファイルの実装が非常に異なっているため、共通点がないため、インターフェイスを使用します。
データにアクセスするためのメソッドとタイプのみが同じままである場合は、インターフェースを使用します。共有する必要のあるものの間にも共通のコード/機能がある場合は、継承を使用します。
この場合、インターフェースで十分であり、共通コードのない抽象クラスを利用するのは無駄になります。インターフェイスを使用することの忘れられがちな利点の1つは、一度に複数のインターフェイスを実装できるのに対し、1つの親クラスからしか継承できないことです。
この場合、インターフェースを使用する方が便利です。
実装の詳細を抽象化することにより、フラットファイルとデータベースの両方で使用できる共通のインターフェイスを提供できます。変更するときは、このインターフェイスを実装するコードのみが変更され、それらを使用するコードは変更されません。
私は抽象クラスで行きます。純粋なオブジェクト指向のアプローチでは、クラスは非常に小さく、必要なものだけが含まれ、子クラスにはオブジェクトのすべてのパラメーターと値が含まれます。
計画しているデータベースの準備をするために抽象クラスに含まれるものの例はint
、一意のIDの場合です。
投稿で述べたように、データソースで実行できる操作を定義するインターフェイスを作成するのが最適です。単一のデータソースごとに、そのインターフェイスを実装するクラスを作成できます。
フラットファイルを操作するにFileDataWrapper implements DataWrapper
は、クラスFileDataWrapperがデータソースで実行できる操作を実装するクラスを実装できます。後でデータベースに変更するときは、クラスを実装するだけDatabaseDataWrapper implements DataWrapper
です。
DAOデザインパターンとファクトリーを使用できます。高度なDAOプログラミングの例と、コアJ2EEパターン-データアクセスオブジェクトに詳細があります。