Recent Posts
반응형
Archives
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
바로가기

Jin's IT Story

[JAVA] 한국 개발자들이 많이 쓰는 싱글톤 팩토리 패턴 본문

CodeLog: 개발 언어의 모든 것

[JAVA] 한국 개발자들이 많이 쓰는 싱글톤 팩토리 패턴

JinBytes 2025. 7. 30. 17:27
반응형

 

 

 

 

하나의 공장에서 여러 객체를 기술적으로 정제해내는 구조를 묘사한 일러스트

 

 한국의 자바 개발자들 사이에서 가장 널리 사용되는 디자인패턴 중 하나는 싱글톤(Singleton) 패턴과 팩토리(Factory) 패턴입니다.

 이 두 패턴은 객체 생성과 관리의 복잡도를 줄이고 유지보수성을 높이는 데 큰 역할을 하기 때문에, 실무 프로젝트나 기업 내 표준 코드에서도 빈번하게 등장합니다.

 

 이 글에서는 한국 개발자들이 이 두 패턴을 왜 선호하는지, 실제로 어떻게 활용하고 있는지를 예제 중심으로 자세히 살펴보겠습니다.

실무에서 자주 보이는 싱글톤 패턴 활용

 싱글톤 패턴은 프로그램 내에서 단 하나의 객체만 생성되어야 하는 경우 사용됩니다.

 

 한국 개발자들은 공통 설정값을 관리하는 Config 클래스나 로그 관리, DB 커넥션 풀 같은 공유 자원 관리에 싱글톤을 자주 사용합니다.

 

 특히 스프링(Spring) 프레임워크를 사용할 경우 기본적으로 빈(Bean)은 싱글톤 범위로 관리되기 때문에, 개발자가 의식적으로 사용하지 않아도 이 패턴이 적용되는 경우가 많습니다.

public class AppConfig {
    private static final AppConfig instance = new AppConfig();

    private AppConfig() {
        // private 생성자
    }

    public static AppConfig getInstance() {
        return instance;
    }
}

 

 한국의 SI/SM 프로젝트에서는 프로젝트 전역 설정값을 이 AppConfig 같은 구조로 관리하는 경우가 많습니다. 또한, 네트워크 환경 정보나 API 키와 같은 민감한 정보도 싱글톤 객체로 분리해 보안과 재사용성을 높입니다.

한국 개발자들이 선호하는 팩토리 패턴 이유

 팩토리 패턴은 객체 생성을 별도의 메서드나 클래스로 분리하여, 코드의 유연성과 확장성을 높이는 데 기여하는 디자인패턴입니다.

 한국 개발자들은 이 패턴을 통해 서비스 로직과 객체 생성 로직을 명확히 분리할 수 있다는 점을 높이 평가합니다.

public interface Notification {
    void send(String message);
}

public class EmailNotification implements Notification {
    public void send(String message) {
        System.out.println("이메일 전송: " + message);
    }
}

public class SmsNotification implements Notification {
    public void send(String message) {
        System.out.println("SMS 전송: " + message);
    }
}

public class NotificationFactory {
    public static Notification create(String type) {
        if ("email".equalsIgnoreCase(type)) {
            return new EmailNotification();
        } else if ("sms".equalsIgnoreCase(type)) {
            return new SmsNotification();
        }
        throw new IllegalArgumentException("알 수 없는 타입");
    }
}

 

 한국 기업에서는 이러한 구조를 기반으로 알림 시스템, 결제 시스템, 외부 API 연결 모듈 등을 팩토리 패턴으로 구현합니다.

 

싱글톤과 팩토리 패턴의 결합 사용 예시

 한국 개발자들은 싱글톤 패턴과 팩토리 패턴을 별개로 사용하는 데 그치지 않고, 이 두 패턴을 결합하여 보다 강력하고 안정적인 객체 관리 구조를 구성하기도 합니다.

public interface PaymentService {
    void pay(int amount);
}

public class KakaoPayService implements PaymentService {
    public void pay(int amount) {
        System.out.println("카카오페이로 " + amount + "원 결제");
    }
}

public class TossPayService implements PaymentService {
    public void pay(int amount) {
        System.out.println("토스로 " + amount + "원 결제");
    }
}

public class PaymentServiceFactory {
    private static PaymentService instance;

    public static PaymentService getInstance(String type) {
        if (instance == null) {
            if ("kakao".equalsIgnoreCase(type)) {
                instance = new KakaoPayService();
            } else if ("toss".equalsIgnoreCase(type)) {
                instance = new TossPayService();
            } else {
                throw new IllegalArgumentException("지원하지 않는 결제 타입");
            }
        }
        return instance;
    }
}

 

 이 방식은 실무에서 결제 시스템, 인증 시스템, 외부 API 호출 등 다양한 영역에서 사용됩니다. 테스트 코드에서도 동일한 인스턴스를 사용하게 되어 테스트 신뢰도가 높아진다는 이점도 있습니다.

 

 한국 자바 개발자들이 싱글톤과 팩토리 패턴을 선호하는 이유는 실용성과 안정성, 유지보수성이라는 세 가지 핵심 가치에 부합하기 때문입니다.

 

 특히 국내 기업 문화에서 요구하는 빠른 개발 속도와 낮은 오류율을 만족시키기 위해서는 객체 생성을 명확히 제어하는 구조가 필수적입니다. 프로젝트의 규모가 커지거나, 협업 인원이 많아질수록 이런 디자인패턴의 필요성은 더욱 강조됩니다.

 

 이제 여러분도 실제 프로젝트에 이 패턴들을 적용해 보며, 그 진가를 직접 확인해 보시기 바랍니다.

 

 

반응형