스프링 입문을 위한 자바 객체 지향의 원리와 이해 - Chapter 05. 객체 지향 설계 5원칙 - SOLID

김광현·2023년 1월 4일
0

챕터5에서는 객체 지향의 5대원칙에 대해 기술되어있습니다.

또한 이해하기 편하게 하기위해 예시 그림을 자주 인용하겠습니다.

거두절미 하고 바로 내용으로 들어가겠습니다.

객체 지향 설계의 5원칙은 왜 필요할까?

프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 소프트웨어를 만들기 위해서 입니다.


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

SRP란?
클래스메서드하나의 역할만 하도록 해야합니다.
다시 말해, 클래스의 역할과 책임을 너무 많이 주면 안된다는 것 입니다. (하나에 몰아넣기)

잘못된 예제

이 그림을 보면 남자 클래스에 모든 메서드가 들어가있는것을 볼수있습니다.
이렇게 될시 클래스를 불러올때 모든 메서드를 불러와야 하기에 성능이 좋지 않습니다.

그러기에 각자 역할에 맞게 메서드를 나눠주어야 합니다.

옳은 예시


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

OCP란?

기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 합니다.

이상적인 OCP를 설계하려면?

클래스 설계시 변할 부분과 변하지 않을 부분을 명확히 구분해야합니다.
이를 활용하기위해 사용되는 문법이 인터페이스(interface) 입니다.


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

LSP란?

부모클래스를 가리키는 포인터에 해당 클래스를 상속하는 자식 클래스를 할당한다면 모든기능이 정상적으로 작동해야합니다.
다시 말해, 부모 클래스의 인스턴스 대신 자식 클래스의 인스턴스를 사용한다해도 문제가 없어야 합니다.

가장 간단히 LSP를 지키는 방법?

상속은 하되 override를 안하면 됩니다.

불가피한 상황이라면?

상속을 할 때 override가 필요하다면 기존 부모 클래스의 메소드가 하던 역할을 충실히 수행하고 기능의 추가만 신중하게 수행하면 됩니다.


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

ISP란?

한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 합니다.
다시 말해, 자신이 사용하지 않는 기능(인터페이스)에는 영향을 받지 말아야 한다는 의미입니다.

ISP를 지키기 위해선?

큰 규모의 객체는 필요에 따라 인터페이스로 잘게 나누어 확장성을 향상시키면 됩니다.

이는 SRP와도 연관이 있는 원칙입니다.


DIP (Dependency Inversion Principle) 의존 역전 법칙

DIP란?

의존 관계를 맺을 때, 구체적인 것 보다는 추상적인 것에 의존해야 한다는 의미입니다.
다시 말해, 클래스 보다는 추상클래스 인터페이스에 의존해야 합니다.


느낀점 및 알게된점

이번 챕터에서는 가장 중요한 개념인 객체지향의 5대원칙 SOLID를 정리해봤습니다.
이번챕터를 정리하면서 헷갈린 이론은 다시 상기시키고 놓쳤던 개념들도 다시 챙겨보게되었습니다.

해당 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 참고하여 작성되었습니다.

profile
대림대학교 컴퓨터정보학부

0개의 댓글