دیزاین پترن Abstract Factory از دسته سازنده در مجموعه ۲۳ پترن مشهور Gang of Four است. خانوادهای از آبجکتهای مرتبط را بدون وابستگی مصرفکننده به کلاسهای مشخص میسازد.
سناریوی واقعی در فروشگاه
برای هر سرویس حملونقل میتوان Client درخواست و Formatter برچسب سازگار با همان سرویس داشت.
نمونه در PHP
interface ShippingFactory {
public function client(): ShippingClient;
public function label(): ShippingLabel;
}
final class ExpressFactory implements ShippingFactory {
public function client(): ShippingClient { return new ExpressClient(); }
public function label(): ShippingLabel { return new ExpressLabel(); }
}
نمونه در پایتون
class ExpressFactory:
def client(self): return ExpressClient()
def label(self): return ExpressLabel()
چه زمانی مناسب نیست؟
در پروژه کوچک ممکن است تعداد Interfaceها بیش از نیاز شود. خانواده محصول باید واقعا چند شکل مستقل داشته باشد.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.