에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다
1. 디자인 패턴
- 객체지향 설계에서 자주 발생하는 문제에 대한 해결책
- 코드의 재사용성, 관리 용이성, 유연성을 높일 수 있음
장점
장점 | 설명 |
서로 이해할 수 있는 용어 제공 |
개발자 간 공통된 개념과 용어로 의사소통이 쉬워짐
|
표준화된 해결방법 제공 |
반복되는 문제에 대해 검증된 해결책을 제공함
|
유연성 및 유지보수 용이성 |
변경에 강하고, 코드의 수정 및 확장이 용이함
|
구조 개선 |
코드 구조를 명확히 하여 가독성과 재사용성을 높임
|
2. 객체지향 기초
- 객체와 클래스를 중심으로 소프트웨어를 설계하고 구현하는 방법론
주요 개념
개념 | 정의 |
추상화 |
중요한 정보만 드러내고 불필요한 세부 사항은 숨김
- 인터페이스 중심 설계: 구현 세부사항을 숨기고 시스템 유연성과 확장성 확보 |
캡슐화 |
데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어 객체를 구성
- 변경 가능성이 높은 부분을 감추어 외부 영향 최소화: 내부 변경 시 외부 시스템 수정 불필요 |
다형성 |
동일한 인터페이스로 서로 다른 객체를 다룰 수 있게 함
|
상속 |
기존 클래스를 확장하여 새로운 클래스를 정의하고, 속성과 메서드 재사용 가능
|
원칙
원칙 | 정의 / 설명 |
컴포지션 (Composition) |
상속보다 객체 조합을 통해 기능 재사용. 더 유연하고 변경에 강한 구조 설계 가능
|
느슨한 결합 (Loose Coupling) |
클래스 간 의존도를 낮춤. 주로 추상화 계층(인터페이스, 추상 클래스 등)에 의존하여 유연성 확보
|
최소 지식의 원칙 (Law of Demeter) |
객체는 협력 객체의 내부 구조를 알지 않아야 함. 직접 사용하는 객체에만 메시지를 전달
|
할리우드 원칙 (“Don't call us, we'll call you”) |
고수준 모듈이 제어권 가짐. 저수준 모듈은 등록만 하고 호출은 당하지 않음 (ex. 콜백, 이벤트 리스너 등)
|
단일 책임 원칙 (SRP) |
하나의 클래스는 하나의 책임만 가져야 함. 변경 이유는 하나여야 유지보수가 쉬움
|
'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 |