3. 객체지향 설계 5원칙

Yeppi's 개발 일기·2022년 5월 10일
0

객체지향

목록 보기
3/4

1. 응집도와 결합도

좋은 소프트웨어 설계 = 결합도 Coupling 낮추고 + 응집도 Cohesion 높이자

결합도

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

응집도

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


2. SOLID 객체지향 설계 5원칙

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

어떤 클래스를 변경해야 하는 이유는 한가지 뿐이여야 함


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

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

  • 상위 클래스 또는 인터페이스를 중간에 둠

  • 자신의 변화에 대해서는 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있음

  • JDBC, Mybatis, Hibernate 등 JAVA에서 Stream(Input,Out)

  • Application 과 JDBC interface 는 한개씩 → 각 DB Driver는 DB 종료마다 각각 존재

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

서브 타입은 언제나 자신의 기반(상위) 타입으로 교체할 수 있어야 함


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

클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안됨

  • 프로젝트 요구 사항과 설계에 따라 SRP 와 ISP 중 선택

  • 한 기능당 한 객체만을 할당

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

자신보다 변하기 쉬운 것에 의존하지 않음

  • 개방 폐쇄 원칙에서도 있는 내용

  • SOLID는 객체 지향 4대 특성에 기반함으로써 유사한 모양을 가지고 있음

  • 중간에 인터페이스를 넣고, 해당 인터페이스만 의존해야 함

profile
imaginative and free developer. 백엔드 / UX / DATA / 기획에 관심있지만 고양이는 없는 예비 개발자👋

0개의 댓글