Spring

[Spring] 객체 지향 설계의 5가지 원칙 (SOLID)

잉숭 2021. 4. 18. 17:05

SOLID : 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정의했다

 

 

1. SRP

 

- Single Responsibility Principle, 단일 책임 원칙

- 하나의 클래스는 하나의 책임만 가져야 한다

- 책임의 기준은 모호하지만 대표적으로 기능의 변경시 파급 효과가 적도록 해야 한다

 

SRP 위반 사례, 서비스 클래스에서 저장소 객체를 생성하고 있다

 

 

2. OCP

 

- Open/Closed Principle, 개방-폐쇄 원칙

- 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀 있어야 한다

- 대표적으로 인터페이스를 만든 뒤 새로운 클래스에서 기능을 추가하는 것이 있다

- DI(Dependancy Injection)는 대표적인 OCP 적용 사례이다

 

OCP 적용 사례, 인터페이스를 수정하지 않고 새로운 메소드를 추가했다

 

3. LSP

 

- Liskov Substitution Principle, 리스코프 치환 원칙

- 하위 객체들은 상위 인터페이스에서 정한 기능들을 변경하지 않아야 한다

 

LSP 위반 사례, join 기능을 구현하지 않았다

 

 

4. ISP

 

- Interface  Segregation Principle, 인터페이스 분리 원칙

- 인터페이스는 기능에 따라 여러 개로 나누는 것이 좋다

- 인터페이스가 명확해지며, 대체 가능성이 높아진다

 

 

 

5. DIP

 

- Dependency Inversion Principle, 의존관계 역전 원칙

- 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다

 

DIP 위반 사례, memberRepository는 MemoryMemberRepository라는 구체 인스턴스에 의존한다