Welcome :っ)

Devlog/CS

객체지향 5대 원칙 - SOLID 원칙

lazy.won 2022. 8. 6. 23:17
728x90
반응형

 

 

 

 

 

 

인프런 "모든 개발자의 실무를 위한 필수 기본기 클래스" 강의를 듣고 정리한 내용 + 따로 검색하여 공부한 내용입니다. 

 

 

 

 

객체지향 프로그래밍의 5가지 설계 원칙

SOLID란 객체 지향 프로그래밍을 하면서 지켜야 하는 5대 원칙이다. 

SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)의 앞글자를 따서 만들어졌다. 

 

SOLID원칙을 지키면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 되는 것으로 알려져 있다.

 

 

 

 

SOLID 원칙

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

객체는 하나의 책임만을 지녀야 한다는 법칙이다.

 

 

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

객체의 확장에는 열려있고, 수정에는 닫혀있게 해야 한다는 법칙이다.

기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다는 원칙을 말한다.

 

 

LSP (Liskov Substitution Principle, 리스코브 치환 원칙)

부모 객체의 역할은 자식 객체도 할 수 있어야 된다는 원칙이다.

B객체가 A객체의 자식이라면 B객체 타입을 A로 바꾸더라도 작동에 문제가 없어야 한다. 

상위 타입에서 정한 명세를 하위 타입에서도 그대로 지킬 수 있을 때 상속을 해야 한다.

일반적으로 LSP가 지켜지지 않으면 OCP를 위반하게 된다.

 

 

ISP (Interface Segregation Principle, 인터페이스 분리 원칙)

클라이언트가 자신이 이용하지 않는 메서드는 의존하지 않아야 한다는 원칙이다.

SOLID 1원칙인 SRP는 객체가 하나의 책임만을 가져야 한다고 했는데, 여기서는 인터페이스(혹은 추상클래스)가 하나의 책임만을 가져야 한다고 보면 된다.

 

 

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

의존성을 항상 고수준으로 향하게 하여 예측할 수 없는 의존성 변화를 줄이자는 원칙이다.

자주 변경되는 구현체(저수준)를 의존하게 되면 코드 변경이 작을 것이고, 버그와 사이드 이펙크가 날 확률이 높아진다. 

이때, 코드가 덜 바뀌는 인터페이스나 추상 클래스(고수준)를 의존한다면 상대적으로 안정적인 코드를 작성할 수 있다. 

 

의존성 역전을 하면서 의존성 주입과 함께 사용한다.

의존성 주입을 사용하게 되면 객체의 생성을 외부에 맡기게 된다. 해당 클래스는 외부 의존성에 조금 더 자유롭게 되며 테스트 작성 시에도 용이하다. 

의존성 주입(DI)을 해주기 위해선 결국 이를 사용하는 클라이언트에서 의존성들을 일일이 넣어줘야 한다. 

만약 잘못 코드를 작성하면 의존성 관계가 복잡해질 수 있다. 그래서 보통 의존성 주입을 별도로 관리해주는 라이브러리나 프레임워크를 사용한다. 

 

 

 

 

 

 

320x100
반응형

'Devlog > CS' 카테고리의 다른 글

객체 지향 프로그래밍이란?  (0) 2022.08.07
테스트 코드와 TDD 이해하기  (0) 2022.07.11
쿠키와 세션, 인증 이해하기  (0) 2022.06.24
OSI 7계층과 TCP/IP 4계층 모델  (0) 2022.06.22
프로그램 운영 기본 지식  (0) 2022.06.21