java 3

싱글톤 할 바에 Enum

헤드퍼스트 디자인패턴 책을 보는데 5장 싱글톤 부분에 이런 내용이 있더라고요."Enum을 사용하면 싱글톤의 동기화 문제, 클래스 로딩 문제, 리플렉션, 직렬화와 역직렬화 문제를 해결할 수 있다."아무래도 책이 Java 교재가 아니라 디자인패턴 책이다 보니, 저정도의 언급만 있고 구체적인 이유까지는 기술이 안되어있는데요.그래서 궁금함에 제가 알아본 내용을 정리해보겠습니다. 🔍 목차00. Singleton00-1. Singleton이란01. 안티패턴 Singleton01-1. 인스턴스를 언제 만들 것인가01-2. 리플렉션01-3. 직렬화 & 역직렬화02. Enum 싱글톤02-1. Enum은 멀티스레드 인스턴스 생성 문제에서 자유롭다02-2. Enum은 리플렉션에도 강하다02-3. Enum은 직렬화와 역직..

Design Pattern 2026.04.06

자바 long으로 표현되는 값을 double에 담아도 될까?

`long`으로 표현되는 값을 `double`에 담아도 될까요?처음 이 질문을 봤을 때, 직관적으로는 상관이 없을 듯해 보였습니다.`long`은 8byte의 정수형을 담는 타입이고,`double`은 같은 8byte 크기의 실수형을 담는 타입이며, 정수가 실수의 부분집합인 데다가 표현 범위도 `long`보다 `double`이 훨씬 크기 때문입니다.근데 그런 뻔한 설명이 답이라면, 이 질문이 존재하지도 않았겠구나, 분명 어떤 문제가 있겠구나 하는 생각이 들었고, 이 질문에 대해 확실한 답을 하기 위해 알아본 내용을 글로 정리해보고자 합니다. 🔍 목차# 00. 자바의 정수형과 실수형# 01. 자바에서 0.1은 0.1이 아니다# 02. 부동소수점# 03. 부동소수점과 정밀도# 04. long으로 표현되는 값을..

Java 2026.02.08

더 좋은 설계를 위한 S.O.L.I.D 원칙 이해하기

우리는 좋은 소프트웨어 시스템을 개발하기 위해 좋은 설계를 하고자 합니다. 좋은 설계란 무엇일까요?다양한 사람들의 의견을 모아본 바는 다음과 같습니다."낮은 결합도와 높은 응집도를 지향하는 것""유지보수가 쉬운 시스템을 만드는 것""변화를 손쉽게 받아들일 수 있도록 하는 것" 서비스를 지속하고 가치를 창출하기 위해서는 하나의 애플리케이션 개발을 마치고 방치하는 것이 아니라, 지속적으로 유지하고 확장해나가야 합니다.이 과정에서 코드를 추가하거나 기존 코드를 수정해야하는 일이 종종 발생하곤 할겁니다.하지만 유지보수 및 확장 단계에서 다른 사람이 작성한 코드가 이해가 안되거나, 너무 많은 기존의 코드를 건드려야하게 되는 상황을 맞게 된다면 어떨까요?많은 사람들이 좋은 설계의 정의를 위와 같이 내린 이유를 이..

CS&Network 2025.03.11