3

私が取り組んできた Java プロジェクトは、いくつかの RDBMS と統合されています。コードの重複を減らす最も明白な方法は、次のような型階層を作成することです。

               ThirdPartySoftware (superclass)
                      /|\
                     / | \
                 TPS1  2  3

ただし、このアプローチでは、TPS1、TPS2、および TPS3 の実装が非常に似ています (完全ではありません)。スーパークラスが本質的に何かが異なる可能性があるすべての場所を認識せずに、すべての機能をスーパークラスにプルすることは困難です。

私たちが検討した 1 つの方法は、「機能 X をサポートする」、「機能 Y を実行できない」など、DB が共有する機能によって DB を表すことですが、その方法でコードがより保守しやすくなるかどうかは完全には明らかではありません。 :

  1. 癖の多くは、1 つの DB にのみ適用されます。
  2. これを価値のあるものにするのに十分な共有/比較可能な (基本的には抽象化可能な) 機能は考えられません。

おそらく設計パターンを使用して、サブクラス間のコードの重複を減らす方法について他に提案がある人はいますか?

4

2 に答える 2

5

http://en.wikipedia.org/wiki/Bridge_pattern

あなたのケースだけを探しますが、とにかくAPIが何であるかを知るのはあなたの仕事です.

おそらく、org.hibernate.dialect.Dialect がいくつかの新しいアイデアを提供してくれるでしょう。

于 2013-04-04T16:00:47.360 に答える
0

私はJavaの専門家ではありませんが、スーパークラス/抽象クラスに加えて、インターフェースと依存性注入をリポジトリパターンとともに使用できます。これらのパターンは排他的ではありません。私は頻繁に、次のようなマスター クラスのサブクラスであるインターフェイスの実装を持っています。

SqlDataAccess : BaseDataAccess、IDataAccess および TPSDataAccess : SqlDataAccess、ITPSDataAccess

于 2013-04-04T16:30:02.227 に答える