개발새발
드디어 스프링1 #SOLID 본문
객체 지향 설계 원칙이란?
- 수많은 사람들이 고민하고 시행착오를 겪으면서 만든 원칙
- 좀 더 유지보수하기 쉽고, 유연하고, 확장이 쉬운 소프트웨어를 만들 수 있다
- 코드 베이스뿐만 아니라 아키텍쳐 설계에 이르기까지 다양하게 적용할 수 있다
객체 지향 설계과정
1. 요구사항을 찾고 세분화한다
2. 기능을 구현하는데 필요한 데이터를 객체에 추가한다
3. 해당 데이터를 이용하는 기능을 구현
4. 객체 간에 어떻게 메소드 호출을 주고받을지 결정
SOLID
- SRP, OCP, LSP, ISP, DIP의 첫 글자를 딴것이 SOLID
SRP(Single Responsibility Principle, 단일 책임의 원칙)
- 클래스가 제공하는 기능들은 하나의 책임을 수행하는데 집중해야 한다
잘지키면
: 응집력이 높아지고, 결합도는 낮아진다
: 코드 가독성이 좋아짐
: 테스트 범위도 작아지고, 유지보수가 편해진다
OCP(Open Close Principle, 개방폐쇄의 원칙)
- 확장에는 열려있고(open), 변경에는 닫혀 있어야 한다(close)
- 변하는것과 변하지 않는것을 잘 구분하면 OCP를 지키는 용이
- 인터페이스를 통해 느슨하게 의존
LSP(The Liskov Substitution Principle, 리스코브 치환의 원칙)
- 하위클래스의 객체를 상위클래스의 참조 변수에서 대입해서 상의클래스의 역할을 수행하는데 문제가 없어야 한다
ISP(Interface Segregation Principle, 인터페이스 분리의 원칙)
- 인터페이스의 단일 책임을 위한 원칙
- 일반적인 하나의 인터페이스를 조금 더 구체적인 인터페이스로 쪼개는것이 낫다
DIP(Dependency Inversion Principle, 의존성 역전의 원칙)
- 자주 변경되는 구체 클래스에 의존하지 않고, 추상화된 클래스에 의존하는것
- 구체 클래스가 추상 클래스에 의존하므로 의존 관계가 역전된 형태
'스프링' 카테고리의 다른 글
#스프링 MVC 동작 (0) | 2022.08.04 |
---|---|
#스프링 MVC (0) | 2022.08.04 |
#DI #AOP # Ioc # PSA (0) | 2022.08.04 |
#서블릿 (0) | 2022.08.04 |
#아키텍처 # 라이브러리 # 프레임워크 (0) | 2022.08.04 |
Comments