본문 바로가기
Skills/Java

객체지향의 5원칙 SOLID

by Hoseok 2023. 1. 29.
728x90
반응형

SRP

SRP, 단일 책임 원칙, Single Responsibility Principle, 객체는 오직 하나의 책임을 가져야 한다.

OCP

OCP, 개방-폐쇄 원칙, Open-Closed Principle, 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙이다. 즉, 새로운 코드를 생성하는 것은 개방하고 기존 코드를 수정하는 것은 폐쇄해야 한다. DIP가 선행되어야 한다. 유지보수에 편리하다.

LSP

LSP, 리스코프 치환 원칙, Liskov Substitution Principle, 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다. 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다는 것. 상속의 본질인데, 이를 지키지 않으면 부모 클래스 본래의 의미가 변해서 is-a 관계가 망가져 다형성을 지킬 수 없게 된다.

ISP

ISP, 인터페이스 분리 원칙, Interface Segregation Principle, 클라이언트에서 사용하지 않는 메서드는 사용해선 안 된다. 그러므로 인터페이스를 다시 작게 나누어 만든다. OCP와 비슷한 느낌도 들지만 엄연히 다른 원칙이다. 하지만 ISP를 잘 지키면 OCP도 잘 지키게 될 확률이 비약적으로 증가한다. 정확히 말하자면 인터페이스의 SRP라고 할 수 있다.

DIP

DIP, 의존성 역전 원칙, Dependency Inversion Principle, 구체적인 것에 의존하던 것을 추상적인 것으로 의존하라는 원칙이다. 추상화한 인터페이스를 구현한 클래스는 얼마든지 나중에 교체될 수 있다. 유지보수에 편리하다.

*디자인 패턴 중 전략 패턴과 유사

*IoC와 혼동하지 말자, IoC는 제어의 흐름에 대한 개념이지만 DIP는 클래스 사이의 의존성에 대한 개념이다.

728x90
반응형