JAVA 시작하기 - 객체지향 설계 5원칙(SOLID)

Big Jay·2023년 7월 24일
0

Java 시작하기

목록 보기
10/14
post-thumbnail

좋은 소프트웨어 설계를 위해 결합도(coupling)는 낮추고 응집도(cohesion)는 높여야 한다.

결합도

모듈(클래스)간의 상호 의존 정도를 나타내는 지표이며, 결합도가 낮으면 모듈간의 상호 의존서이 줄어들어 객체의 재사용 및 유지보수 유리

응집도

하나의 모듈(클래스) 내부에 존재하는 구성 요소들의 기능적 관련성
응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아 재사용 및 유지보수가 용이

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

어떠한 클래스를 변경해야 하는 이유는 한가지 뿐 이여야 한다. 즉 하나의 클래스는 하나의 기능 담당하여 하나의 책임을 수행하도록 설계하는 것

2. 개방 패쇄 원칙 - OCP(Open Closed Principle)

자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.

상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서는 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있다.

[확장에 열려있다]
모듈의 확장성을 보장하는 것을 의미
[확장에 열려있다]
객체를 직접 수정하는 것에 대해 제한해야 한다는 의미

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

서브 타입은 언제나 자신의 기반(상위) 타입으로 교체 할 수 있어야 한다.
다향성의 특징을 이용하기 위해 상위 클래스 타입으로 객체를 선언하여 하위 클래스의 인스턴스를 받으면, 업캐스팅된 상태에서 부모의 메서드를 사용해도 동작이 의도대로 흘러가야 하는 것

4. 인터페이스 분리 원칙 - ISP(Interface Segregation Principle)

클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.
인터페이스를 사용하는 클라이언트를 기준으로 분리하여, 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공하는 것이 목표

프로젝트 요구 사항과 설계에 따라서 SRP(단일책임원칙) / ISP(인터페이스분리원칙)를 선택한다.

5. 의존 역전 원칙 - DIP(Dependency Inversion Principle)

자신보다 변하기 쉬운 것에 의존하지 말 것.

어떤 클래스를 참조해서 사용해야하는 상황이 생긴다면, 그 클래스를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조

참고

  • 패스트 캠퍼스(한번에 끝내는 Java/Spring 웹 개발 마스터 초격자 패키지)
  • inpa님 블로그
profile
안녕하세요.

0개의 댓글