2016-07-09 6 views
0

私は答えで推奨パターンが列挙型で実装されているSingleton Patternたこのlinkに私のプロジェクトでの行動に似た何かを書く/次のシナリオでは、適切なデザインパターン(シングルトン/工場パターン)はどれですか?

を読みました。私たちは読み取り/書き込みメソッドを含む

  1. インターフェイスを次されている場合でも、私は自分のコードに遭遇していると言うにClassA
  2. public class ClassAFactory { 
    
         public static ClassAFactory getInstance() throws Exception { 
    
          return new ClassAImpl(); 
         } 
        } 
    
    を次のよう
  3. ファクトリクラスにはコードが含まれているインタフェースメソッドの

  4. 実装ClassAImpl

    私は次の疑問を持っています。

  1. ここでは、このシナリオでコードを整理するためのaptデザインパターンはどれですか?
  2. 新しいインスタンスを作成するのではなく、同じインスタンスを繰り返し再利用する利点は何ですか?

PS:アプリケーションの性質はWebアプリケーションです。私はすべての私の読み取り/書き込み操作をデータベース内で行う中央のパーツ/モジュールを用意しようとしています。

お手数ですがお手数ですが、

+0

アプリケーションの性質についてもう少し詳しく知る必要があります。あなたが投稿した例では、ファイルへの読み書きに関連してシングルトンが使用されています。ファイルへのアクセスを同期させるほうが簡単で、たとえば並列書き込みがないことを確認することがより簡単であるため、シングルトンとして使用することは理にかなっています。リンクの例では、ファクトリを持つのは意味がありません。しかし、あなたの特定の事件についてもっと知る必要があります。あなたのコードが解決しようとしている問題は何ですか? –

+0

「読み書き操作」と言ったときの1つの質問は、ファイルの読み書きについてですか?それがファイルの読み込み書き込みである場合、Non Singletonオブジェクトを返すファクトリは適切ではありません –

+0

同じファイルに同時に書き込む2つのスレッドがあるとします。 –

答えて

0

主な理由は、シングルトンを使用すると、必要に応じてREAD、WRITE操作を同期する方が簡単になるということです。これは、ファイルシステムf.exからのFilesのような、スレッドセーフではないリソースへの書き込み操作がある場合です。時間外に新しいオブジェクトを作成し、スレッドセーフではないリソースを上書きしようとする可能性のある複数のスレッドを危険にさらすことは意味がありません。

クラスを何度も作成するファクトリを使用するメリットの点では、私は本当にどんな利点も見ません。

最後の編集に基づいて更新します。リポジトリパターンまたはDAOを使用することができ、シングルトンでもそうでなくてもかまいません。次の記事をお読みください。私はそれはあなたが必要なものであると信じて:

Spring @Repository best practices

そして、もう一つの小さな明確化。それは春と言われていますが、実際にはこれらはすべての状況に適用できる原則です。この記事で解説されているトピックを適用するには、Springを本当に必要としません。

これがうまくいくかどうかお知らせください。

この記事からわかるように、シングルトンは、DAO /リポジトリと組み合わせて使用​​するための非常に一般的な方法です。

+0

あなたが投稿した答えは本当に便利です..私に次のことを明確にしてください。1. DAO - データアクセスオブジェクトdb操作後に返される結果であり、Repositoryはデータベース上で読み取り/書き込みアクションを実行する実装レイヤーにすぎません。または、私が何かを逃しています。親切に私にもっと知ってもらうのを助けてください。 – lsof

+0

また、現在の例 'interface'の後にread/write dbメソッドの' implementation'(リポジトリ)があります - これはリポジトリパターンですか?私はどこかで失われている.. – lsof

関連する問題