Javaの4階層アーキテクチャと関係を振り返る

1403 ワード

entity層
entityは、最下位、いわゆるmodelに位置するエンティティクラスを定義します.エンティティクラスのプロパティと、プロパティに対応するgetメソッドとsetメソッドが含まれます.
dao層
次にdaoレイヤです.ファイルは*Mapperまたは*DAOで命名されます.daoレイヤはentityレイヤを呼び出し、daoレイヤは実際に使用するcrudの方法を定義します.
サービス層
サービス・レイヤに戻ります.サービス・レイヤは、定義されたDAOレイヤへのインタフェースを呼び出すビジネス・インプリメンテーションに使用されます.**サービス層の設計はまずインタフェースを設計し,その実現クラス,すなわちプロジェクトにおけるサービスおよびimplパッケージを設計する.
  • 実装クラス実装クラス(*impl)は、daoレイヤの定義されたインタフェースを呼び出してビジネスロジックを実装する.
  • インタフェースインタフェース(service)は、実装クラスを直接呼び出す.
  • 疑問1:なぜサービス層があるのか.コントロール層に書いてありますが、香りがしませんか?答え:前のプログラミングではサービス層の概念がなかったので、すべてのものがコントロールに書かれています.だからここで重点的に話します.サービス層が関心を持っているのは、ビジネスの処理過程です.コントロールラーは業務そのものだけに関心を持っていて、栗を挙げます:映画館のキャンセル注文に似ていて、私は注文がキャンセルされたかどうかだけに関心を持っていて、それがどのように削除されたのか気にしません.その利点は、サービス層を業務処理プロセスをカプセル化することで、汎用的な業務ロジックの独立性と再利用性に有利であり、プログラムが非常に簡潔で、可読性も高いことである.
  • 疑問2:serviceは意外にもインタフェースと実装クラスを分けていますか?(あなたは何をしているのか、理不尽なことをしているのか...?)どうしてインタフェースを一周して実装クラスを呼び出すのですか?実装クラスを直接使うのは香りがしませんか?答え:やはり具体的なビジネスシーンに来ます:私は映画館の注文を削除します.それでは、実行する必要がある操作は座席を解放する必要があるかもしれません.座席を解放する方法はたくさんあるかもしれません.例えば、私は今席を解放しています座席のmarkプロパティを0に設定し、将来の日に座席を解放するまで、購入した座席テーブルからデータを削除します.この場合、私のサービスインタフェースとそれ以上のレベルでは、このような変更のために変更する必要はありません.サービスの実装クラスのビジネス処理で修正するだけでいいです.

  • 2020年7月30日.疑問2に対してまたいくつかの新しい見方があります.サービスはインタフェースと実装に分けられ,コードの具体的な実装を外部に露出したくないため,対応を提供すればインタフェースである.
    コントロール層
                   
    

    以上はすべて個人の現在の理解に基づいて、また大物たちに提案して、指摘してください.