2011-11-15 4 views
1

現在、私はSOLIDの原則、特にSRPについて学んでいます。SRP(Single-Responability Principle)違反のためにSpringアプリケーションの設計に誤りがある可能性があります

この原則を見てみると、アプリケーション全体のすべてのサービスメソッドを含む単一のSpring Serviceクラスがあった小さなアプリケーションに取り組んでいたことを思い出します。

それはすべてのjpaデータアクセスメソッドを含む単一のDAOクラスを持っていました。

これはすべてSRPの明確な違反です。ではない?

+0

でしょう。アプリがほとんどやっていない限り。 – Kevin

答えて

3

まあ、はい、いいえ、ここでのアイデアは、「変化の軸」(マーティンの専門用語が大好きである)が1つしかない場合、クラスが「SRP承認済み」であるということです。致命的な言葉では、これは、「このクラスが変わる理由は複数あるのだろうか? I.あなたのサービスクラスが、他のいくつかのサービスを呼び出すロジックを集約し(そして、言いましょう)、そのサービスコールが何を返すのかに関するいくつかのビジネスロジックを行うならば、そのサービスクラスは2軸の変更点を持ちます。変更、およびビジネスロジックが変更されたときの別のものです。この場合、他のサービスを呼び出す部分は、返された結果にビジネスロジックを適用する部分から分離する必要があります。

しかし、これらのことは「法律」ではなく「法律」と呼ばれています。なぜなら、文脈が要求するときに限り、あなたが開発したものすべてに盲目的に適用されるべきではないからです。

例として、Martin Fawler自身がモデル(Java Beanとして)とDAOオブジェクトの分離を反パターン(AnemicDomainModel)とみなします。これに代わる良い方法として、Play Frameworks model implementationを参照してください。しかし、Javaでデータアクセス層を構築する際に、多くの他の人々と実際にこのBean/Dao分離を行ったことは確信しています。コード自体はきれいで使いやすく、柔軟性があります。

関連する問題