🛹 목표
목표 | 난이도 | 달성 여부 |
이펙티브 자바 ITEM 1, 2 - 생성자 대신 정적 팩터리 메서드를 고려하라 - 생성자에 매개변수가 많다면 빌더를 고려하라 |
🥺 | ✔️ |
패스트 캠퍼스 강의 듣기 |
😘 | ✔️ |
📋 공부 내용 & 기록
1. Builder Pattern
빌더 패턴(Builder Pattern)
1. 빌더 패턴이란? 생성과 관련된 디자인 패턴으로, 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 1-1. 정의(Definition) GoF 디자인 패턴 중 생성 패턴에 해당한다. 빌더 패턴은 복
dev-youngjun.tistory.com
Builder Pattern은 Optional한 필드들이 많은 인스턴스를 생성할 때 좋다. 필드가 많은 객체의 인스턴스를 생성할 때 생성자의 매개변수를 일일이 관리해주기 힘들다. 점층적 생성자 패턴으로 여러가지의 상황에 맞는 생성자를 두어 인스턴스화를 하기도 하지만 이것은 코드를 이해하는 데 복잡하다. 매개변수의 숫자를 줄이고 각 필드를 set함수로 초기화하는 자바 빈즈 패턴도 있지만, 객체 하나를 만들기 위해 생성자 안에서 많은 메소드를 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 깨지게 된다. 생성자 패턴과 자바빈즈 패턴의 장점을 가져온 것이 빌더패턴이다. 빌더패턴은 필요로 하는 객체를 바로 생성하지 않고, 빌더 객체를 통해 필드의 값을 초기화한 후 사용자가 원하는 객체를 리턴시켜주는 방식이다. 해당 패턴을 사용함으로써 얻을 수 있는 장점은 아래와 같다.
- 필요한 데이터만 초기화 할 수 있다.
- 유연성을 확보할 수 있다.
- 가독성을 높일 수 있다.
- 불변성을 확보할 수 있다.
2. 그래프 관련 알고리즘
다익스트라 알고리즘
- 하나의 정점에서 다른 모든 정점 간의 각각 가장 짧은 거리를 구하는 경우
- 우선순위 큐(minHeap)을 사용하여 거리를 구할 수 있다.
크루스칼 알고리즘
- MST를 찾을 수 있는 알고리즘(greedy를 기초로 함)
- 가장 가중치가 작은 간선부터 선택하여 최적의 경로를 탐색
- Union-Find 알고리즘으로 사이클이 생기는지 확인하며 경로를 찾는다.
프림 알고리즘
- MST를 찾을 수 있는 알고리즘(greedy를 기초로 함)
- 특정 정점에서 부터 시작해, 해당 점점에 연결된 가장 가중치가 작은 간선을 선택하고, 간선으로 연결된 정점들에 연결된 간선 중에서 가장 가중치가 작은 간선을 선택하는 방식으로 최적의 경로 탐색
🏷️ 하루 정리 & 느낀 점
효율을 생각하며 코드를 작성하는 습관을 들이는 것이 좋을 것 같다.
📌 내일 해야할 일
'TIL' 카테고리의 다른 글
[TIL] 🌱 2023.03.21 - 함수적 인터페이스 (0) | 2023.03.21 |
---|---|
[TIL] 🌱 2023.03.20 - Objects.requireNonNull() (0) | 2023.03.20 |
[TIL] 🌱 2023.03.15 - 뷰 엔드포인트 테스트 정의 (0) | 2023.03.15 |
[TIL] 🌱 2023.03.13 - Spring Security (0) | 2023.03.13 |
[TIL] 🌱 2023.03.09 - git squash & merge 그리고 rebase (0) | 2023.03.09 |