Java - SOLID 원칙

박민수·2023년 11월 14일
0

Java

목록 보기
2/13
post-thumbnail

SOLID 원칙

소프트웨어 개발에서 객체 지향 설계는 유연하고 확장 가능하며 유지 관리 및 재사용 가능한 코드를 작성할 때 중요한 역할을 한다. SOLID 원칙은 프로그래밍의 코딩 표준이다. 이 원칙은 아래에 주어진 5가지 원칙의 약어이다.

  1. SRP(Single Responsibility Principle): 단일 책임 원칙
  2. OCP(Open/Closed Principle: 개방 폐쇄 원칙
  3. LSP(Liskov substitution principle): 리스코프 치환 원칙
  4. ISP(Interface segregation principle): 인터페이스 분리 원칙
  5. DIP(Dependency inversion principle): 의존 관계 역전 원칙

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

모든 클래스는 단일 책임 또는 단일 작업 또는 단일 목적을 가져야 한다. 클래스에 많은 책임이 있는 경우 책임 중 하나를 변경하면 사용자도 모르게 다른 클래스에 영향을 줄 수 있으므로 버그 가능성이 높아진다. 이 원칙은 변경의 결과로 버그가 발생하더라도 관련 없는 다른 동작에 영향을 미치지 않도록 동작을 분리하는것을 목표로 한다.

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

클래스는 확장에는 열려 있고, 수정에는 닫혀 있어야 한다. 클래스의 현재 동작을 변경하면 해당 클래스를 사용하는 모든 시스템에 영향을 미친다. 클래스가 더 많은 기능을 수행하도록 하려면 이상적인 접근 방식은 이미 존재하는 기능을 변경하지 않고 추가하는 것이다. 이 원칙은 클래스의 기존 동작을 변경하지 않고 클래스의 동작을 확장하는 것을 목표로 한다. 이는 클래스가 사용되는 모든 곳에서 버그가 발생하지 않도록 하기 위한것이다.

LSP(Liskov substitution principle): 리스코프 치환 원칙

파생 또는 하위 클래스는 기본 또는 상위 클래스로 대체 가능해야 한다. 간단히 말해서 클래스 A가 클래스 B의 하위 유형인 경우, 프로그램 동작을 방해하지 않고 B를 A로 대체할 수 있어야 한다. 이 원칙은 부모 클래스의 자식인 모든 클래스를 예기치 않은 동작 없이 부모 대신 사용할 수 있도록 한다.

농부의 아들은 아버지로부터 농사 기술을 물려받아 필요하면 아버지를 대신할 수 있어야 한다는 의미로 이해할 수 있다. 아들이 농부가 되고 싶다면 아버지를 대신할 수 있지만, 크리켓 선수가 되고 싶다면 둘 다 같은 가족 계층에 속하더라도 분명히 아버지를 대신할 수 없다.

ISP(Interface segregation principle): 인터페이스 분리 원칙

클라이언트가 사용하지 않는 방법에 의존하도록 강요해서는 안 된다. 클래스가 유용하지 않은 작업을 수행해야 하는 경우 낭비이며, 클래스에 이러한 작업을 수행할 능력이 없으면 예기치 않은 버그가 발생할 수 있다. 클래스는 역할을 수행하는 데 필요한 작업만 수행해야 한다. 다른 작업은 나중에 다른 클래스에서 사용할 수 있는 경우 완전히 제거하거나 다른 곳으로 옮겨야 한다. 이 원칙은 클래스가 필요한 작업 집합만 실행하도록 일련의 작업을 더 작은 집합으로 분할하는것을 목표로 한다.

DIP(Dependency inversion principle): 의존 관계 역전 원칙

상위 수준 모듈은 하위 수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다. 추상화는 세부 사항에 의존해서는 안 되고, 세부 사항은 추상화에 따라 달라진다. 이 원칙은 인터페이스를 도입하여 하위 클래스에 대한 상위 클래스의 종속성을 줄이는 것을 목표로 한다.

profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보