オブジェクト向け設計とスプリング


なぜSpring(本質)を使うのか
  • Springはオブジェクト向け言語であり、Javaベースのフレームワーク
  • である.
  • オブジェクト向け設計が可能です.(多形性!!)
  • の多形性を最大化することができる.
  • 制御の逆転(IoC)、依存関係注入(DI)は、多形性を利用してキャラクタを容易に処理し、実現することをサポートする.
  • はレゴの積み木を組み立てるように!舞台を演じる俳優を選ぶように!実装を簡単に変更できます.
  • マルチファンクション
    インタフェース-インプリメンテーション
    MemberRepository - MemoryMemberRepository, JdbcMemberRepository, ...
    ロミオ-チャン・ドンゴン元彬无名俳优...
    車-アヴァンティ、K 3、ベンツ...
    多機能性:クライアントに影響を与えることなく、サーバの実装機能を柔軟に変更できます.
    ※重要なのは安定したインターフェイスを作ること!!!!!!!!!!(最も簡単な方法で設計しなければならない)
    Why? インタフェースが変わると、クライアントもサーバも大きく変わります.
    良好なオブジェクト向け設計五原則(SOLID)
    ※面接では質問できます
    ロバート・マーティンは「クリーンコード」で有名で、オブジェクト向けの設計の5つの原則をまとめた.
    SRP単一責任原則
  • クラスは1つの責任しか負いません.
  • の責任はあいまいです.(大きくても小さくてもいいです.コンテキストや状況によって異なります.)
  • の重要な基準は変更です.
  • 変更が発生した場合、影響が小さい場合は、単一の責任原則に従う必要があります.
  • 例)UIの変更、オブジェクトの作成および使用の分離
  • OCP開放-閉鎖の原則(重要)
  • ソフトウェア要素は拡張時に開いていますが、変更時には閉じている必要があります.
  • の多形性
  • を利用する.
  • インタフェースを実装する新しいクラス(確かに拡張されています)が作成されましたが、変更はありませんか?->問題は、
  • が実装されています.
  • では、そこから学んだ役割と実装との分離について説明します.
    に質問
  • MBERServiceクライアント直接選択実装クラス
  • MemberRepository m = new MemoryMemberRepository(); // 기존 코드
    MemberRepository m = new JdbcMemberRespository(); // 변경 코드
  • インプリメンテーションオブジェクトを変更するには、クライアントコードを変更する必要があります.
  • は確かに多形性を使用していますが、OCPの原則は守れません.
  • この問題はどうやって解決しますか?
  • オブジェクトを作成し、関連付けを確立する必要がある個別のアセンブリと設定者.
  • LSPリスク交換の原則(Liskov置換の原則)
  • プログラム内のオブジェクトは、プログラムの正確性を損なわずにサブタイプのインスタンスに変換できる必要があります.
  • 多形性では、サブクラスはすべてのインタフェースの約束を守らなければならない.多形性の原則をサポートするために、インタフェースを実現した実装体はこれらの原則を信じ、使用しなければならない.
  • はコンパイルに成功した物語だけではありません
  • 例)自動車インタフェースのEXCELは、前に移動する機能を有し、後に移動することはLSPに違反する、速度が遅くても前に移動する
  • である.
    ISPインタフェース分離の原則
  • 特定のクライアント向けの複数のインターフェースは、1つの汎用インターフェース
  • よりも優れている.
  • 自動車インタフェース->運転インタフェース、メンテナンスインタフェースから
  • 分離
  • ユーザークライアント->パイロットクライアント、メンテナンス担当クライアント
  • に分離
  • 離脱後、メンテナンスインターフェース自体が変化し、ドライバークライアント
  • に影響しない.
  • インタフェースは明確で、代替性が高い.
  • DIP依存関係逆転の原則(重要)
  • プログラマーは「具体化ではなく抽象化に頼る」と話しています.依存注入はこの原則に従う方法の一つである.
  • 簡単に言えば、実装クラスに依存するのではなく、インタフェースに依存する
    これは彼を前述の役(Role)に依存させることに等しい.(運転手は車の役割に頼らなければならない)オブジェクト世界もクライアント依存インタフェースが必要で、柔軟に実装体を変更することができます!インプリメンテーションに依存すると、変更は非常に困難になります.
  • しかし、OCPに記載されたMemberServiceはインタフェースに依存するが、実装クラスにも依存する.
  • MBERServiceクライアント直接選択実装クラス
  • MemberRepository m = new MemoryMemberRepository(); // DIP 위반
    整理する
  • オブジェクト向けコアは多形性
  • である.
  • の多形性だけでは簡単に部品を交換することはできません.
  • の多形性のみで、実装オブジェクトを変更するとクライアントコードも変更されます.
  • の多形性だけではOCP,DIPは守れない.
  • にはまだ何かが必要です.
  • reference
    スプリングコア原理-プリミティブ