2011-07-21 11 views
2

デザイン/フレームワークを実行している間は、Value Object、Services、DAOなどのベースクラスを持つのが普通です。例えば、新しいVOを作成すると、そのBaseVO 。新しいDAOを作成する場合は、BaseDAOから拡張する必要があります。私たちがそのような基本クラスを持っている理由は何ですか?なぜJavaでBaseクラスを使用するのですか

答えて

1

継承は、カプセル化と多態性とともに、オブジェクト指向プログラミングの3つの主要な特性の1つです。継承(基本クラスを継承する)により、他のクラスで定義されている動作を再利用、拡張、変更する新しいクラスを作成できます。

一般的なメソッドとプロパティを基本クラスに簡単に追加できます。しかし、それはすべての場合に正しい方法ではありません。デザインパターン(Strategy Patternなど)は、上記のOOPの概念を使用して実際の設計を行います。

0

親クラスを持つことは、すべての子プロセスに適用できるビヘイビアとデータメンバーが継承ツリーの上に移動できるようにすることをお勧めします。例えば

Object toString(); 
5

回答は明白です;) それは、共通の機能またはロジックアプリケーション全体を追加するのは簡単なので。

たとえば、値オブジェクトの作成日と変更日を常に保存する場合は、または、サービスでデータベース接続を取得するヘルパーメソッドを提供します。

0

フレームワークを拡張するときに、時には保存する必要がある機能やフィールドがあります。簡単な例を考えてみましょう。私たちが名前と能力を持った動物を持っているなら(私の場合は学校の例ですが)、動物であればそれらのものがあればいいはずです。だから、猫がいると言うと、明らかに猫は犬と同じことを言っていないので、両方ともSpeak()の能力を持っている間に2つの異なる結果が得られます。

あなたのケースでは、コードの大部分を書き直すことなくレイヤーを交換することができるように(時には何も変更する必要はない場合もあります)、拡張性と互換性のあるシステムを作成します。

0

私はかつての文を聞いたことがあるし、それをここに引用:

small programs have a funny way of getting bigger quickly

プロジェクトがますます大きくなるにつれて、より柔軟で具体的にする必要があります。したがって、サービスとビジネスロジックを疎結合させることで、オブジェクトが他の実装に依存するのを避けることができます。

0

BaseDAOは、後継クラス全体で使用される一般的なメソッドで構成されるか、すべての拡張クラスに必要な動作として実装する必要がある抽象メソッドを定義することもできます。

1

BaseDAOがそのすべてのサブクラスに対して行うことができる例は、データベースへの接続の設定または取得です。 AppleDAO、PearDAO、BananaDAO(あなたのDBに保存したいものがApple、Pear、Bananaの場合)に同じコードを記述するのはかなり難しいでしょう。

DB接続をすべて取得するコードを入力した場合は、すべてを変更する必要があります。データベースホストが変更されたとき。スーパークラスにある場合は、1つの場所で変更するだけです。

関連する問題