좋은 설계란
시스템에 새로운 요구사항이나 변경사항이 있을 때, 영향을 받은 범위가 적은 구조를 말한다.
SOLID 원칙이란 객체지향 설계에서 지켜줘야 할 5개의 원칙(SRP, OCP, LSP, DIP, ISP) 를 말한다.
1. SRP (Single Reponsibility Principle, 단일 책임 원칙)
- 객체는 단 하나의 책임만 가져야 한다는 원칙
- 응집도를 높게, 결합도(의존성)를 낮게
2. OCP (Open Closed Principle, 개방 폐쇄 원칙)
- 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙
- 변경되는 것이 무엇인지에 초점을 맞춘다.
- 자주 변경될 수 있는 내용은 수정하기 쉽게(Open) 설계해야 하고,
- 자주 변경되지 않는 내용은 수정에 영향받지 않게(Closed) 설계해야 한다.
- 캡슐화를 통해 여러 객체에서 사용하는 같은 기능을 인터페이스에 정의
3. LSP (Liskov Substitution Principle, 리스코프 치환 원칙)
- 부모 클래스와 자식 클래스 사이의 행위에는 일관성이 있어야 한다는 원칙
- 부모 클래스의 인스턴스 대신 자식 클래스의 인스턴스를 사용해도 문제가 없어야 함
⇒ 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 함 (overriding: X)
4. ISP (Interface Segregation Principle, 인터페이스 분리 원칙)
- 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙 (불필요한 의존성 제거)
- 하나의 거대한 인터페이스 보다는 여러 개의 구체적인 인터페이스가 낫다는 것을 의미
⇒ 각 인터페이스 함수를 ConcreteClass 에서 필요에 따라 implement 함
5. DIP (Dependency Inversion Principle, 의존 역전 원칙)
- 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙
- 의존 관계를 맺을 때, 변화하기 쉬운 것 보다 변화하기 어려운 것에 의존해야 함
. 변화하기 쉬운 것 = 구체적인 것 ⇒ 클래스 인스턴스
. 변화하기 어려운 것 = 추상적인 것 ⇒ 추상 클래스, 인터페이스
'배움의공간(學) > 기타' 카테고리의 다른 글
핸드폰으로 밤하늘 별 촬영법 (0) | 2023.02.07 |
---|---|
Stack overflow survey (0) | 2023.01.02 |
[DP] GoF (Gang of Four) (0) | 2022.12.22 |
if(kakao) dev2022 을 보며 (0) | 2022.12.08 |
[Microsoft] Learn .NET (0) | 2019.06.18 |
댓글