オブジェクト向け設計5原則-OLID
9月28日にTILでまとめられたエンティティ5の原則
クラスは1つの責任しか負いません. の責任は大きいかもしれないし、小さいかもしれない. の文脈と状況とは異なります. 変更時の波及効果が小さい場合は、単一責任の原則に従います! ソフトウェア要素は拡張時に開いていますが、変更時には閉じている必要があります. 新しいクラスを作成し、インタフェースを実装して、新しい機能を実現します.
欠点 インプリメンテーションオブジェクトを変更するには、クライアントコードを変更する必要があります.(多形性を使用していますが、OCPの原則は守れません)
→オブジェクトを作成し、関連関係を個別に組み立てるには、設定者が必要です→これはスプリングによって助けられます!
プログラム内のオブジェクトは、プログラムの正確性を損なわずにサブタイプのインスタンスに変換できる必要があります. 多形性では、サブクラスはすべてのインタフェースの約束を守らなければならない.LSPはこの点を保証しなければならない. すなわち、インタフェースを実現したインプリメンテーションを信頼して使用するためには、インプリメンテーションは、インタフェースを設計する際に所望の機能を正確に実現しなければならない.
複数の特定のクライアントインタフェースは、1つの汎用インタフェースよりも優れています.(コードが短いのは良いことではありません!)
界面が明瞭になり,代替性も向上した.
それは抽象化に依存し、具体化ではない.
→クライアントは実装クラスに依存せず、インタフェースに依存する. ロールに依存する必要があります. クライアントは、柔軟な変更を行うためにインタフェースに依存する必要があります. オブジェクト向けのコアは多形性であるが,多形性だけではSOLIDを守れない.スプリングはDIとDI容器であり、多形性とSOLID(特にOCP、DIP)をサポートする.
つまり、新しいインプリメンテーションボディを作成するときに、クライアントコードを変更せずに機能を追加することで、部品を交換するように簡単に開発できます.
オブジェクト向け設計の5原則
SRP単一責任原則
Ex) UI변경, 객체의 생성과 사용을 분리
OCP開放-閉鎖の原則
欠点
→オブジェクトを作成し、関連関係を個別に組み立てるには、設定者が必要です→これはスプリングによって助けられます!
LSPリスク両替の原則
Ex) 자동차 인터페이스에 엑셀 - 앞으로가는 기능이 있다고 했을 때,
구현체에 엑셀 - 뒤로가는 기능으로 구현하면 LSP 원칙을 위반한 것이다.
ISPインタフェース分離の原則
複数の特定のクライアントインタフェースは、1つの汎用インタフェースよりも優れています.(コードが短いのは良いことではありません!)
界面が明瞭になり,代替性も向上した.
Ex) 인터페이스 AB가 A와 관련된 업무 aa와 B와 관련된 bb업무를 한다고 했을 때,
인터페이스 AB를 인터페이스 A와 인터페이스 B로 분리하고 각각 aa와 bb의 역할을 하도록 업무 또한 분리!
DIP依存関係逆転の原則
それは
→クライアントは実装クラスに依存せず、インタフェースに依存する.
つまり、新しいインプリメンテーションボディを作成するときに、クライアントコードを変更せずに機能を追加することで、部品を交換するように簡単に開発できます.
Reference
この問題について(オブジェクト向け設計5原則-OLID), 我々は、より多くの情報をここで見つけました https://velog.io/@9sanha/객체지향-설계-5원칙-SOLIDテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol