본문 바로가기
개발/Java || Spring

객체 지향 설계 원칙 (SOLID) - SRP / OCP

by leedonggeun 2024. 5. 30.

단일 책임 원칙 (SRP / Single Responsibility Principle)

하나의 클래스는 하나의 책임만 가져야 합니다.
즉, 하나의 클래스는 하나의 기능에 집중해야한다는 것입니다.

그 예로, 맥가이버 칼을 들 수 있습니다.
이 칼은 실생활에서는 휴대성과 활용성이 뛰어납니다.
하지만, 소프트웨어 관점에서는 하나의 객체가 많은 기능을 담당합니다.  (칼, 맥주/와인 오프너 ...)
여러 기능을 책임지고 있기 때문에 기능을 수정하면 같은 객체 내의 다른 기능에게 이슈가 전파될 가능성이 있습니다.

즉, SRP는 이 기능의 변경이 이루어질 때 연쇄(파급) 효과가 적어야 합니다.

 

개방-폐쇄 원칙 (OCP / Open-Closed Principle)

기존의 코드를 수정하지 않고 기능을 추가할 수 있도록 설계해야 합니다.
확장에 대해서는 Open, 수정에 대해서는 Closed 되어야 한다는 의미로 이해할 수 있습니다.

이 원칙은 우리가 알고있는 추상화를 설명하는 원칙이라고 이해할 수 있습니다.
추상화란 Abstract 클래스 or Interface를 말합니다.

댓글