private 생성자나 열거 타입으로 싱글턴임을 보증하라 — Effective Java[3]
싱글톤은 “전 세계에 딱 하나만 존재해야 하는 객체”를 만드는 패턴입니다. 쉬워 보이지만 리플렉션과 직렬화라는 두 가지 함정이 있습니다. 세 가지 구현 방식과 각각의 약점을 비유로 설명합니다.
싱글톤은 “전 세계에 딱 하나만 존재해야 하는 객체”를 만드는 패턴입니다. 쉬워 보이지만 리플렉션과 직렬화라는 두 가지 함정이 있습니다. 세 가지 구현 방식과 각각의 약점을 비유로 설명합니다.
매개변수가 4개 이상인 클래스를 만든다면, 세 가지 패턴 중 하나를 선택해야 합니다. 어느 것을 고를지 비유로 먼저 이해하고 코드로 확인해 봅니다.
new SomeClass()가 디폴트로 보이지만, 실제로는 정적 팩토리 메서드가 훨씬 더 많은 정보를 전달하고 더 유연합니다. 왜 그런지, 언제 쓰는지 비유와 함께 풀어봅니다.
한 줄 요약: 빌더 패턴은 복잡한 객체를 단계적으로 조립하는 패턴으로, 필수 값은 생성자로, 선택 값은 메서드 체이닝으로 받아 마지막에 build()로 완성된 객체를 반환한다.
한 줄 요약: 추상 팩토리 패턴은 관련된 객체들의 묶음(제품군)을 if-else 없이 팩토리 객체 자체를 교체하는 방식으로 생성하는 패턴이다.
한 줄 요약: 팩토리 메서드 패턴은 객체 생성 로직을 서브클래스에 위임하여, 클라이언트 코드가 구체적인 클래스에 의존하지 않고도 객체를 생성할 수 있게 하는 생성 패턴이다.
한 줄 요약: 싱글톤 패턴은 클래스의 인스턴스가 프로그램 전체에서 오직 하나만 존재하도록 보장하고, 그 인스턴스에 전역적으로 접근할 수 있는 방법을 제공하는 생성 패턴이다.
Part 1에서 객체·책임·의존·캡슐화를 다뤘습니다. 이번에는 객체지향이 진짜 힘을 발휘하는 순간, 다형성과 추상화를 봅니다. “왜 인터페이스를 쓰는가?”라는 질문에 답하는 글입니다.
한 줄 요약: 디자인 패턴은 소프트웨어 설계에서 반복적으로 등장하는 문제에 대한 검증된 해결책 템플릿이다.
JPA에서 엔티티 매핑은 객체와 DB 테이블을 연결하는 설계 작업이다. 어노테이션 하나를 잘못 사용하면 운영 DB 데이터가 날아가거나, 타입 변경으로 기존 데이터가 오염되는 사고가 발생한다. 각 어노테이션의 의...