에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다
1. 디자인 패턴
- 객체지향 설계에서 자주 발생하는 문제에 대한 해결책
- 코드의 재사용성, 관리 용이성, 유연성을 높일 수 있음
장점
- 서로 이해할 수 있는 용어 제공
- 표준화된 해결방법 제공
- 유연성 및 유지보수 용이성
- 구조 개선
2. 객체지향 기초
- 객체와 클래스를 중심으로 소프트웨어를 설계하고 구현하는 방법론
주요 개념
추상화
- 중요한 정보는 드러내고 불필요한 세부 사항은 숨김
캡슐화
- 데이터와 그 데이터를 처리하는 메서드를 하나로 묶어 객체를 만듬
다형성
- 동일한 인터페이스를 통해 서로 다른 객체를 다룰 수 있게 해줌
상속
- 기존 클래스를 확장하여 새로운 클래스를 정의
- 상위 클래스의 속성이나 메서드를 하위 클래스에서 재사용 및 재정의 가능
3. 객체지향 원칙
캡슐화
- 변경이 잦을것으로 예상되는 부분은 캡슐화하여 외부에서 접근할 수 없게 하기
- 내부 동작을 변경하더라도 외부 시스템은 변경할 필요 없음
명세화
- 인터페이스 기준으로 프로그램 작성
- 구현 세부사항은 숨기고 시스템은 유연하고 확장 가능해짐
Composition
- 상속으로 재사용을 누릴 경우, 시스템이 경직될 수 있음
- 객체를 다양한 방식으로 재사용하기
느슨한 결합
- 추상계층을 의존
- 유연성
최소 지식의 원칙
할리우드 원칙
- 고수준 구성 요소가 제어 흐름을 책임짐
- 저수준 구성 요소는 고수준 구성 요소를 직접 호출할 수 없음
단일 역할 원칙
- 하나의 클래스는 하나의 역할만 맡아야 함
- 클래스가 바뀌는 이유는 오로지 한가지여야 함
'Java > Design Pattern' 카테고리의 다른 글
[헤드퍼스트 디자인 패턴] 5. 싱글턴 패턴 (1) | 2024.12.16 |
---|---|
[헤드퍼스트 디자인 패턴] 4. 팩토리 패턴 (0) | 2024.12.16 |
[헤드퍼스트 디자인 패턴] 3. 데코레이터 패턴 (1) | 2024.12.16 |
[헤드퍼스트 디자인 패턴] 2. 옵저버 패턴 (0) | 2024.12.16 |
[헤드퍼스트 디자인 패턴] 1. 전략 패턴 (2) | 2024.12.16 |