JAVA

디자인 패턴 - 팩토리 패턴

승운노트 2025. 10. 2. 10:22

학습 목표

  • 팩토리 패턴의 정의와 목적을 설명할 수 있다.
  • 팩토리 패턴을 활용해 객체 생성 과정을 캡슐화하고 코드를 개선할 수 있다.
  • 팩토리 패턴이 실무에서 왜 유용한지 이해하고 사례를 들어 설명할 수 있다.

사전 기반 지식

  • 객체 지향 프로그래밍: 클래스와 객체 생성에 대한 기본 개념
  • 추상화: 인터페이스와 구현 클래스를 분리하는 개념
    • 추상화란 이처럼 사용자에게는 필요한 기능(What)만 노출하고, 복잡한 내부 동작 원리(How)는 숨기는 설계 원칙을 말합니다.
  • 다형성: 상위 인터페이스 타입으로 다양한 하위 구현 객체를 다루는 능력

 

💡

  • 추상화 (Abstraction): '무엇'에 집중합니다.
  • 복잡한 현실을 단순화하여 핵심적인 개념만 보여주는 데 목적이 있습니다.
  • 사용자가 이해하기 쉽도록 불필요한 세부사항을 제거하는 설계 관점입니다.
// 사용자는 List가 어떻게 동작하는지 몰라도 된다.
// 그냥 add, get, size 메서드만 사용하면 된다.
List<String> list = new ArrayList<>();

list.add("A");
list.get(0);
list.size();

 

캡슐화 (Encapsulation): '어떻게 보호할 것인가'에 집중합니다.

데이터(속성)와 그 데이터를 처리하는 기능(메서드)을 하나로 묶고,

외부의 직접적인 접근으로부터 데이터를 보호하고 숨기는(정보 은닉) 데 목적이 있습니다.

 

캡슐화 예시: 데이터 보호
public class User {
    private int age; // 외부에서 직접 접근 불가

    // age를 설정하는 공개된 통로(메서드)
    public void setAge(int age) {
        if (age > 0) { // 유효성 검사: 데이터 보호
            this.age = age;
        }
    }
}

 

 

실제 활용 사례

  • 데이터베이스 연결: DBFactory.getConnection("MySQL"), DBFactory.getConnection("Oracle")처럼 문자열만으로 상황에 맞는 DB 커넥션 객체를 생성할 때 사용합니다.
  • 결제 시스템: PaymentFactory.getPaymentGateway("CreditCard"), PaymentFactory.getPaymentGateway("PayPal") 등 다양한 결제 모듈을 생성할 때 사용됩니다.
  • UI 컴포넌트 생성: UIFactory.createButton("Windows"), UIFactory.createButton("Mac")처럼 운영체제에 맞는 버튼 UI 객체를 생성할 때 활용할 수 있습니다.

핵심 요약

  • 팩토리 패턴은 객체 생성 로직을 별도의 클래스로 캡슐화하여 클라이언트와 구현 클래스 간의 결합도를 낮추는 패턴입니다.
  • 이를 통해 코드의 유지보수성과 확장성이 크게 향상되며, **단일 책임 원칙(SRP)**과 **개방-폐쇄 원칙(OCP)**을 지키는 데 도움이 됩니다.
  • 클라이언트는 구체적인 클래스 이름(new Warrior())을 몰라도, 인터페이스와 팩토리를 통해 원하는 객체를 사용할 수 있습니다.

'JAVA' 카테고리의 다른 글

디자인 패턴 - 전략 패턴  (0) 2025.10.02
디자인 패턴 - 어댑터 패턴  (0) 2025.10.02
디자인 패턴 - 싱글톤  (0) 2025.09.30
성능 최적화(HikariCP) 와 커넥션 풀이란?  (0) 2025.05.27
JDBC 구성 요소(아키텍처)  (0) 2025.05.27