[php] 팩토리 디자인 패턴
소프트웨어 개발에서 팩토리 디자인 패턴은 객체 생성 로직을 캡슐화하여 클라이언트에게는 적절한 객체를 생성할 수 있는 인터페이스를 제공합니다. 이 패턴은 객체를 생성함으로써 클라이언트 코드에 대한 의존성을 줄이고 유지보수성을 향상시킵니다.
왜 필요한가?
일반적으로 객체를 생성하는 코드는 클라이언트 코드와 밀접하게 연결되어 있습니다. 이로 인해 특정 클래스의 변경은 클라이언트 코드에 영향을 미칠 수 있습니다. 팩토리 디자인 패턴은 이러한 의존성을 완화할 수 있으며, 객체 생성 로직을 한 곳에 캡슐화하여 중복을 줄이고 유연성을 높일 수 있습니다.
어떻게 구현되는가?
아래는 PHP에서의 팩토리 디자인 패턴의 간단한 예제이다.
interface Vehicle {
public function drive();
}
class Car implements Vehicle {
public function drive() {
echo "Driving a car";
}
}
class Bike implements Vehicle {
public function drive() {
echo "Riding a bike";
}
}
class VehicleFactory {
public static function create($vehicleType) {
switch($vehicleType) {
case 'car':
return new Car();
case 'bike':
return new Bike();
default:
throw new Exception("Invalid vehicle type");
}
}
}
// 클라이언트 코드
$car = VehicleFactory::create('car');
$car->drive(); // "Driving a car" 출력
위의 예제에서 VehicleFactory
클래스는 create
메서드를 통해 클라이언트에게 적절한 객체를 생성합니다. 클라이언트 코드는 생성된 객체가 어떻게 생성되었는지에 대해 알 필요가 없습니다. 이로써 객체 생성 로직과 클라이언트 코드 간의 결합도를 낮출 수 있습니다.
마치며
팩토리 디자인 패턴은 객체 생성을 캡슐화하여 유연성을 향상시킵니다. 이를 통해 클라이언트 코드와 객체 생성 로직 간의 결합을 줄일 수 있고, 유지보수성을 높일 수 있습니다. 이러한 이점으로 인해 많은 소프트웨어에서 이 패턴이 활용되고 있습니다.
참고 문헌:
- https://en.wikipedia.org/wiki/Factory_method_pattern