OOP의 5가지 원칙(SOLID)

SRP, OCP, LSP, ISP, DIP

좋은 OOP(객체지향 프로그래밍)를 설계를 하기 위한 5가지 원칙(SOLID)이 있다.

S - 단일 책임 원칙(SRP, Single Responsibility Principle)

객체는 단 하나의 책임만 가져야 한다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따르는 것.

O - 개방 폐쇄의 원칙(OCP, Open Closed Principle)

기존의 코드를 변경하지 않으면서 기능을 확장할 수 있어야 함. 인터페이스(변하지 않는 것)에서 구체적인 출력 클래스(변하는 것)를 캡슐화해 처리하도록 해야한다. 변해야 하는 것은 쉽게 변할 수 있게 하고, 변하지 않아야 할 것은 변하는 것에 영향을 받지 않게 해야한다.

L - 리스코프 치환 원칙(LSP, Liskov Substitution Principle)

프로그램 객체는 프로그램의 정확성을 깨뜨리지 않고 하위 인스턴스로 변경이 가능해야 한다. 다형성에서 하위 클래스는 인터페이스의 규약을 다 지켜야 한다는 것.

I - 인터페이스 분리 법칙(ISP, Interface Segregatoin Principle)

특정 클라이언트를 위한 인터페이스 여러개가 범용의 인터페이스 하나보다 낫다. SRP와도 연관되어 있는데 하나의 범용 인터페이스는 여러개의 책임을 수행하게 될 가능성이 높다. 그러므로 단일 책임을 갖는 여러개의 분할 인터페이스로 나누는것이 SRP, ISP 둘다 만족할 수 있다.

D - 의존관계 역전 원칙(DIP, Dependency Inversion Principle)

프로그래머는 추상화(인터페이스)에 의존해야지 구현체(클래스)에 의존하면 안된다. 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다. OCP가 되려면 기본적으로 DIP가 만족되어야 하는데 다형성 만으로는 DIP, OCP를 지킬 수 없고 의존성 주입(DI, Dependency Injection) 이라는 기술이 필요하다.

DI에 대해 자세하게 더 알고 싶다면 이 게시글로 가보자.

간단한 정의만 보고는 SOLID가 잘 이해되지 않을 수 있다. 그래서 아래 글에 예를 들어가며 SOLID에 대해 설명해놨으니 참고해보자!


*틀린 부분이 있으면 언제든지 말씀해 주시면 공부해서 수정하겠습니다.


© 2022. All rights reserved.

Powered by 애송이