Springフレームワークで使用される設計パターンは何ですか?[閉まっている]


90

Springフレームワークで使用されている設計パターンは何ですか?


MVC、フロントコントローラー、ビューヘルパー、シングルトン、プロトタイプ、ファクトリーなど、10以上のパターンが含まれています。 javabench.in/2012/02/design-patterns-being-used-in-spring.html
ラウル

回答:


74

さまざまな設計パターンが使用されていますが、いくつか明白なものがあります。

  • プロキシ-AOP、およびリモートで頻繁に使用されます。

  • シングルトン-Spring構成ファイルで定義されたBeanは、デフォルトではシングルトンです。

  • テンプレートメソッド-ボイラープレートの反復コード(接続をきれいに閉じるなど)を処理するために広く使用されます。たとえば、JdbcTemplateJmsTemplateJpaTemplateです。


次のコメントを更新:MVCの場合は、MVCリファレンスを読むことをお勧めします

MVCで使用されているいくつかの明らかなパターン:

  • モデルビューコントローラー :-)。Spring MVCの利点は、コントローラーがサーブレットではなくPOJOであることです。これにより、コントローラーのテストが容易になります。注意すべきことの1つは、コントローラーは論理ビュー名を返すことだけが必要であり、ビューの選択は別のViewResolverに任されていることです。これにより、さまざまなビューテクノロジでコントローラーを再利用しやすくなります。

  • フロントコントローラー。SpringはDispatcherServletを提供して、着信要求がコントローラーに確実にディスパッチされるようにします。

  • ビューヘルパー -Springには、ビューでのプレゼンテーションからコードを分離するのを支援するために、いくつかのカスタムJSPタグとベロシティマクロがあります。


ありがとう、Spring MVCモジュールで使用されるデザインパターンは何ですか?
トニー、

10
SpringがBeanにシングルトンを実装しているとは思いません。シングルトンスコープBeanは、アプリケーションコンテキストごとに1つのインスタンスを持つことに注意してください。したがって、アプリケーションに2つのSpringコンテキストがある場合、それらは同じシングルトンBeanをロードし、コンテキストごとFooのインスタンスを取得Fooすると、2つの異なるオブジェクト参照を取得します。代わりに、ここで適用されるデザインパターンはフライウェイトです
Luiggi Mendoza '

@Luiggi Mendoza春にはシングルトンオブジェクトがないということですか?説明してください。
Kumaresan Perumal

1
@KumaresanPerumalシングルトンパターンとシングルトンインスタンスの間には大きな違いがあります(大文字/小文字のSに注意してください)。シングルトンパターンとは、アプリケーション全体を通じてオブジェクトの単一のインスタンスを維持することです。SpringがシングルトンBeanを検出するときに行うことは、アプリケーションコンテキストごとに単一のインスタンスを作成することです。アプリケーションコンテキストは、Springのコアコンポーネントであり、オブジェクトの作成と取得を委任するのに役立ちます。シングルトンBeanは、アプリケーションコンテキストごとに1回だけ作成されます。
Luiggi Mendoza

モデルビューコントローラー、フロントコントローラー、ビューヘルプのリンクはoracle.com/technetwork/java/index.htmlにあります。有効なリンクで回答を更新していただけませんか?
SpringLearner 2017年

12

そしてもちろん、依存性注入、つまりBeanFactory / ApplicationContext全体の中心となるIoC(制御の反転)です。


10

DIのことは、実際にはある種の戦略パターンです。ロジック/実装を交換可能にしたい場合は、通常、ホストクラスにインターフェースと適切なセッターメソッドを見つけて、そのインターフェースのカスタム実装を配線します。


マスター自身からの回答。@オリバーはここでより多くのパターンを述べることができますか?
Gaurav

6

SpringはベストプラクティスのAPIパターンのコレクションであり、腕の限り、それらの買い物リストを作成できます。APIの設計方法は、これらのパターンに従うことを奨励します(ただし、強制するわけではありません)。そうすることを知らなくても、パターンに従うのは半分の時間です。


3

サービスロケーターパターン-ServiceLocatorFactoryBeanは、コンテキスト内のすべてのBeanの情報を保持します。クライアントコードが名前を使用してサービス(Bean)を要求すると、コンテキストでそのBeanを見つけて返します。クライアントコードは、Beanを見つけるためにSpring関連のコードを記述する必要はありません。



1

ファクトリパターンは、BeanFactoryおよびApplicationコンテキストを介してBeanをロードするためにも使用されます。


1

ファクトリメソッドパターン:オブジェクトのインスタンスを作成するためのBeanFactoryシングルトン:インスタンスタイプはコンテキストのシングルトンにすることができますプロトタイプ:インスタンスタイプはプロトタイプにすることができます。ビルダーパターン:複雑なインスタンスの作成を担当するクラスでメソッドを定義することもできます。


0

Springコンテナは、Beanスコープ(シングルトン、プロトタイプなど)に応じてBeanオブジェクトを生成します。したがって、これはAbstract Factoryパターンを実装するように見えます。Springの内部実装では、各スコープを特定のファクトリの種類のクラスに関連付ける必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.