دیزاین پترن Factory Method از دسته سازنده در مجموعه ۲۳ پترن مشهور Gang of Four است. ساخت آبجکت را به یک متد واگذار میکند تا مصرفکننده به نوع مشخص پیادهسازی وابسته نباشد.
سناریوی واقعی در فروشگاه
یک سرویس پرداخت میتواند با توجه به کشور، درگاه بانکی مناسب را بسازد.
نمونه در PHP
abstract class PaymentCreator {
abstract protected function gateway(): PaymentGateway;
public function pay(int $amount): void {
$this->gateway()->charge($amount);
}
}
final class CardPayment extends PaymentCreator {
protected function gateway(): PaymentGateway { return new CardGateway(); }
}
نمونه در پایتون
class PaymentCreator:
def gateway(self):
raise NotImplementedError
def pay(self, amount):
self.gateway().charge(amount)
class CardPayment(PaymentCreator):
def gateway(self): return CardGateway()
چه زمانی مناسب نیست؟
این پترن با Simple Factory یکسان نیست. فکتوری متد کلاسهای زیرمجموعه را در تعیین نوع محصول دخیل میکند.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.