이카's
article thumbnail
Published 2023. 6. 7. 01:03
SOILD 원칙 Language/Java

SOILD 원칙

프로그래밍 패러다임을 공부하면서 객체지향을 언급하였다. 객체지향을 공부하면 자동으로 따라서 나오는 SOILD원칙에 대해 알아보고자 한다.

 

S : 단일 책임의 원칙(SRP, Single responsibility Principle)

모든 클래스는 각각 하나의 책임만을 가져야 한다는 원칙이다. 만약 한 클래스가 여러 행동에 대한 책임을 가지고 있다면 여러 행동에 대한 어떤 요청이 들어올 수 있다. 이에 따라 모든 행동에 수정을 해줘야함으로 비효율적인 내용이 된다. 반면에 하나의 책임만 가지고 있다면, 해당 클래스를 변경해야 하는 이유와 효율적인 부분이 좋아진다.

 

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

유지 보수 사항이 생긴다면, 코드를 쉽게 확장할 수 있도록 설계되어야 하고, 수정시 쉽게 수정하지 못하도록 닫혀있어야 한다는 것이다. 즉, 기존의 코드는 잘 변경되지 않으면서 쉽게 확장 할 수 있는 코드를 만들어야 하는 것이다.

  • 확장에 대해 열려 있다: 요구사항이 변경될 때 새로운 동작을 추가하여 애플리케이션의 기능을 확장할 수 있다.
  • 수정에 대해 닫혀 있다: 기존의 코드를 수정하지 않고 애플리케이션의 동작을 추가하거나 변경할 수 있다.

 

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

하나의 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 한다는 원칙이다. 즉, 목적과 관심이 다른 클라이언트가 있다면 인터페이스를 적절히 분리 시켜 제공해 줄 필요가 있다. 이를 통해 모든 클라이언트가 자신의 관심에 맞는 인터페이스만 접근하여 불필요한 간섭을 최소화 할 수 있다. 또한 유연하게 객체의 기능을 확장하거나 수정할 수 있다.

 

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

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 하는 것을 의미한다. 클래스는 상속되기 마련이다. 이에 따라 부모, 자식이라는 상하 관계가 만들어지며, 부모 객체에 자식 객체를 넣어도 시스템이 문제없이 실행되게 하는 것을 말한다. 즉, 클라이언트가 상위 타입을 사용하다가 하위 타입으로 변경되어도, 차이점을 느끼지 못하고 상위 타입의 인터페이스를 통해 서브 클래스를 사용할 수 있어야 한다는 것이다.

 

D : 의존 역전 원칙 (DIP, Dependency Inversion Principle)

바른 의존 문화를 위해 태어난 원칙이다. 큰 개념의 상위 타입은 하위 타입에 의존하면 안되고, 하위 타입이 상위 타입을 의존해야 한다는 것이다. 즉, 상위 타입은 독립적으로 구현되어 있어야 하며, 하위 타입에 변화에 영향을 받으면 안된다는 것이다.

  • 상위 타입 : I/O와 먼 비즈니스와 관련된 추상적인 클래스/인터페이스
  • 하위 타입 : DB, HTTP 등 I/O와 가까운 기능을 가지는 것

 

Referance

참고 자료
CS전공지식노트
위키백과
망나니 개발자

반응형
profile

이카's

@Edan Cafe ☕

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!