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