반응형
팩토리 패턴이란?
팩토리 패턴(Factory Pattern)은 객체 생성 로직을 캡슐화하여 코드의 확장성과 유지 보수성을 높이는 디자인 패턴 중 하나입니다. 팩토리 패턴은 객체 생성을 위한 인터페이스를 정의하고, 실제 인스턴스 생성을 하위 클래스에서 처리하도록 합니다. 이를 통해 클라이언트 코드에서 객체 생성 방식을 숨기고, 코드의 유연성을 높일 수 있습니다.
팩토리 패턴의 주요 특징
- 객체 생성 로직을 캡슐화: 객체 생성을 클라이언트 코드에서 분리하여 관리할 수 있습니다.
- 확장성: 새로운 객체 타입을 추가할 때 기존 코드를 수정할 필요 없이 확장할 수 있습니다.
- 유지 보수성: 코드가 복잡해지더라도 생성 로직이 캡슐화되어 있어 유지 보수하기 쉽습니다.
자바로 팩토리 패턴 예제
예제로, 다양한 타입의 Car
객체(예: Sedan
, SUV
)를 생성하는 팩토리를 구현해 보겠습니다.
- 인터페이스 정의:
Car
인터페이스를 정의하여 모든 차종이 구현해야 할 공통 메서드를 명시합니다. - 구체적인 클래스:
Sedan
과SUV
클래스가Car
인터페이스를 구현합니다. - 팩토리 클래스:
CarFactory
클래스는 필요한Car
객체를 생성해주는 역할을 합니다.
코드 예제
// 1. Car 인터페이스 정의
interface Car {
void drive();
}
// 2. 구체적인 Car 클래스들
class Sedan implements Car {
@Override
public void drive() {
System.out.println("Driving a Sedan.");
}
}
class SUV implements Car {
@Override
public void drive() {
System.out.println("Driving an SUV.");
}
}
// 3. 팩토리 클래스 정의
class CarFactory {
// 팩토리 메서드: 필요한 Car 객체를 반환
public static Car createCar(String type) {
switch (type) {
case "Sedan":
return new Sedan();
case "SUV":
return new SUV();
default:
throw new IllegalArgumentException("Unknown car type: " + type);
}
}
}
// 4. 사용 예제
public class Main {
public static void main(String[] args) {
Car sedan = CarFactory.createCar("Sedan");
sedan.drive(); // Output: Driving a Sedan.
Car suv = CarFactory.createCar("SUV");
suv.drive(); // Output: Driving an SUV.
}
}
코드 설명
Car
인터페이스는 모든 차 클래스가 구현해야 하는drive()
메서드를 정의합니다.Sedan
과SUV
클래스는Car
인터페이스를 구현하여 각각의drive()
메서드를 제공합니다.CarFactory
클래스는createCar()
메서드를 통해 요청된 타입의Car
객체를 생성하여 반환합니다.Main
클래스에서는 팩토리 패턴을 사용하여Sedan
과SUV
객체를 생성하고, 각각의drive()
메서드를 호출합니다.
이 패턴을 사용하면 새로운 차종을 추가할 때, 기존 코드를 수정할 필요 없이 새로운 클래스를 만들고 팩토리 메서드를 업데이트하기만 하면 됩니다.
반응형
'언어 > Java' 카테고리의 다른 글
[ Java ] coding pattern - 자바 대표 코딩 패턴 알아보기 (1) | 2024.10.03 |
---|---|
[ Java ] Adapter Pattern 어댑터 패턴이란? (0) | 2024.10.03 |
[ Java ] 자바 버전별 특징 살펴보기 (0) | 2024.08.29 |
[ Java ] JIT 컴파일러 알아보기 (0) | 2024.08.28 |
[ Java ] 객체를 구성하는 property와 function에 대해서 알아보기 (0) | 2024.07.31 |