[이펙티브 자바] 2장 객체 생성과 파괴 - 아이템 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
·
💻/Java
아이템 5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라클래스가 하나 이상의 자원에 의존ex. 맞춤법 검사기(SpellChecker) -> 사전(Lexicon)에 의존정적 유틸리티 클래스 or 싱글턴으로 자원 직접 지정 -> 유연성 ↓, 테스트 어려움잘못된 접근1) 정적 유틸리티사전 교체 X -> 다국어, 테스트용 Mock 어려움public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word) {...} pbulic static List suggestions..
[이펙티브 자바] 2장 객체 생성과 파괴 - 아이템 3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 / 아이템 4 인스턴스화를 막으려거든 private 생성자를 사용하라
·
💻/Java
아이템 3 private 생성자나 열거 타입으로 싱글턴임을 보증하라싱글턴(singleton)인스턴스를 오직 하나만 생성할 수 있는 클래스적용 대상: 무상태(stateless) 객체 or 설계상 유일해야 하는 시스템 컴포넌트(-) 테스트 어려움인터페이스 기반 설계 X -> Mock 대체 X싱글턴 구현 방식1) `public static final` 필드 방식public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {...} public void leaveTheBuilding() {...}}클래스 초기화 시점에 인스턴스 한 번 생성API에 싱글턴임이 명확히 드러남리플랙션(`AccessibleO..
[BOJ/BFS] 백준 14226 - 이모티콘 (Java)
·
✏️/BOJ
14226 - 이모티콘https://www.acmicpc.net/problem/14226문제3가지 연산만을 사용해서 이모티콘 S개를 만들어 보내려 함1. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장2. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 함3. 화면에 있는 이모티콘 중 하나 삭제모든 연산은 1초가 걸리고 클립보드에 이모티콘을 복사하면 이전에 클립보드에 있던 내용은 덮어쓰기가 됨클립보드가 비어있는 상태에는 붙여넣기 X / 일부만 클립보드에 복사 X / 클립보드에 있는 이모티콘 중 일부 삭제 X화면에 이모티콘을 붙여넣기 하면, 클립보드에 있는 이모티콘의 개수가 화면에 추가=> 영선이가 S개의 이모티콘을 화면에 만드는데 걸리는 시간의 최솟값을 구하는 프로그램?입력: S (2 출력: 이모티..
[BOJ/BFS] 백준 17086 - 아기 상어 2 (Java)
·
✏️/BOJ
17086 - 아기 상어 2https://www.acmicpc.net/problem/17086문제NxM 크기의 공간에 아기 상어 여러 마리가 있음공간은 1x1 크기의 정사각형 칸으로 나누어져 있고 한 칸에는 아기 상어 최대 1마리 존재어떤 칸의 안전 거리는 그 칸과 가장 가까운 아기 상어와의 거리두 칸의 거리는 하나의 칸에서 다른 칸으로 가기 위해서 지나야 하는 칸의 수이고, 이동은 인접한 8방향(대각선 포함) 가능=> 안전 거리가 가장 큰 칸?입력첫째 줄: 공간의 크기 N과 M (2 둘째 줄 ~ N개의 줄: 공간의 상태 (0: 빈 칸 / 1: 아기 상어가 있는 칸)빈 칸과 상어의 수가 각각 한 개 이상인 입력만 주어짐출력: 안전 거리의 최댓값?풀이현재 좌표 (x, y)와 해당 지점까지 걸린 거리(dis..
[BOJ/BFS] 백준 2644 - 촌수계산 (Java)
·
✏️/BOJ
2644 - 촌수계산https://www.acmicpc.net/problem/2644문제부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산ex, 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌/ 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌=> 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램?입력사람들은 1, 2, 3, ..., n (1 첫째 줄: 전체 사람의 수 n둘째 줄: 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어짐셋째 줄: 부모 자식들 간의 관계 개수 m넷째 줄부터는 부모 자식간의 관계를 나타내는 두 번호 x, y (x는 y의 부모 번호)각 사람의 부모는 최대 한 명만 주어짐출..
[BOJ] 백준 12851 - 숨바꼭질 2 / 13549 - 숨바꼭질 3 / 13913 - 숨바꼭질 4 (Java)
·
✏️/BOJ
12851 - 숨바꼭질 2https://www.acmicpc.net/problem/12851문제수빈이는 동생과 숨바꼭질을 하고 있다. 수빈: 현재 점 N에 있고, 동생은 점 K에 있다.수빈이의 위치가 x일 때 걷는 경우: 1초 후, x - 1 or x + 1 위치로 이동 / 순간이동 하는 경우: 1초 후 2 * x 위치로 이동=> 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지, 가장 빠른 시간으로 찾는 방법이 몇 가지인지 구하는 프로그램입력: N (0 출력동생을 찾는 가장 빠른 시간가장 빠른 시간으로 동생을 찾는 방법의 수풀이`time[i]`: i번 위치까지 도달하는 데 걸린 최소 시간`cnt[i]`: i번 위치에 최소 시간으로 도달하는 방법의 수`A..
kimmeoww
'분류 전체보기' 카테고리의 글 목록 (2 Page)