OOP의 5대 원칙

Bong2·2022년 2월 26일
0

JAVA

목록 보기
9/16

SOILD

SRP - 단일 책임 원칙

하나의 클래스에 하나의 책임만 가져야 한다.

하나의 클래스에 역할과 책임을 너무 많이 주지 말자. 클래스에 모든 기능을 다 넣어두지 말고 목적과 취지에 맞게 속성과 Method를 구상함으로 관련 책임만 만들자!!

OCP - 개방 폐쇄 원칙

소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀있어야 한다.

자신의 확장에는 열여있어야되고 주변의 변화에 대해서는 닫혀있어야 된다.

개방 폐쇄 원칙을 무시하고 프로그램을 작성하면 객체지향 프로그래밍의 가장 큰 장점인 유연성, 재사용성, 유지보수성 등을 얻을 수 없다.
따라서 객체지향 프로그래밍에서 개방 폐쇄 원칙은 반드시 지켜야 할 원칙이다.

LSP - 리스코프 치환 원칙

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

하위 클래스의 인스턴스는 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다. 인터페이스의 클래스 관계, 상위 클래스와 히위 클래스 관계를 얼마나 논리적으로 설계했느냐.. 하위 클래스가 상위 클래스의 역할을 대신할 때 논리적으로 맞아 떨어져야됨!

  • 아버지와 아들 X
  • 포유류와 고래 O

ISP - 인터페이스 분리 원칙

특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

상황에 맞는 메서드만 제공하는 것임.! 어떤 구현 클래스는 자신이 구현하지 않은 인터페이스는 사용하지 않아야된다.

  • 결론적으로는 단일 책임 원칙(SRP)과 인터페이스 분할 원칙(ISP)은 같은 문제에 대한 두 가지 다른 해결책이라고 볼 수 있다.
    하지만 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결책이라고 할 수 있다.

DIP - 의존 관계 역전 원칙

프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다. ex) 의존성 주입 DI

자동차가 타이어에 의존하면 어떻게 되나..? 자동차 타이어는 자주 바뀌는 것 중에 하나다. 이렇제 자주 바뀌는 것에 의존하면 자동차는 영향을 받게 되어 있다. 즉 자동차 자신보다 더 자주 변하는 스노우타이어에 의존하기에는 좋지않고 추상화된 타이어 인터페이스에 의존하는게 영향을 받지 않는다.
자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 하는 것이 의존 역전 원칙

profile
자바 백엔드 개발자로 성장하자

0개의 댓글

관련 채용 정보