Java/Design Pattern

[헤드퍼스트 디자인 패턴] 0. 디자인 패턴이란

noahkim_ 2024. 12. 16. 03:41

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다


1. 디자인 패턴

  • 객체지향 설계에서 자주 발생하는 문제에 대한 해결책
  • 코드의 재사용성, 관리 용이성, 유연성을 높일 수 있음

 

장점
  • 서로 이해할 수 있는 용어 제공
  • 표준화된 해결방법 제공
  • 유연성 및 유지보수 용이성
  • 구조 개선

 

2. 객체지향 기초

  • 객체와 클래스를 중심으로 소프트웨어를 설계하고 구현하는 방법론

 

주요 개념

추상화
  • 중요한 정보는 드러내고 불필요한 세부 사항은 숨김

 

캡슐화
  • 데이터와 그 데이터를 처리하는 메서드를 하나로 묶어 객체를 만듬

 

다형성
  • 동일한 인터페이스를 통해 서로 다른 객체를 다룰 수 있게 해줌

 

상속
  • 기존 클래스를 확장하여 새로운 클래스를 정의
  • 상위 클래스의 속성이나 메서드를 하위 클래스에서 재사용 및 재정의 가능

 

3. 객체지향 원칙

캡슐화

  • 변경이 잦을것으로 예상되는 부분은 캡슐화하여 외부에서 접근할 수 없게 하기
  • 내부 동작을 변경하더라도 외부 시스템은 변경할 필요 없음

 

명세화

  • 인터페이스 기준으로 프로그램 작성
  • 구현 세부사항은 숨기고 시스템은 유연하고 확장 가능해짐

 

Composition

  • 상속으로 재사용을 누릴 경우, 시스템이 경직될 수 있음
  • 객체를 다양한 방식으로 재사용하기

 

느슨한 결합

  • 추상계층을 의존
  • 유연성

 

최소 지식의 원칙

 

 

할리우드 원칙

  • 고수준 구성 요소가 제어 흐름을 책임짐
  • 저수준 구성 요소는 고수준 구성 요소를 직접 호출할 수 없음

 

단일 역할 원칙

  • 하나의 클래스는 하나의 역할만 맡아야 함
  • 클래스가 바뀌는 이유는 오로지 한가지여야 함