دیزاین پترن Factory یکی از الگوهای طراحی نرمافزاری است که در برنامه نویسی شیءگرا استفاده میشود. این الگو امکان ایجاد شیءها را مستقیما از کلاس مربوطه میگیرد و به کاربر امکان انتخاب نوع شیءهایی که میخواهد برای استفاده از آنها را میدهد. الگوی Factory مفهومی معادل کارخانه است که شیءها را تولید میکند.
این الگو اجازه میدهد که ایجاد شیءها از طریق یک متد (تابع) صورت بگیرد که نوع و خصوصیات شیء مورد نظر را با توجه به ورودیهای داده شده، تعیین میکند.
بیایید یک مثال ساده از دیزاین پترن Factory Pattern را با استفاده از زبان برنامه نویسی PHP ببینیم:
فرض کنید یک برنامه داریم که با اشکال هندسی مختلف سر و کار دارد و نیاز دارد اشکال هندسی مختلفی از جمله دایره و مستطیل را ایجاد کند. ابتدا یک interface یا رابط برای اشکال هندسی تعریف میکنیم:
// Shape.php
interface Shape {
public function draw();
}
حالا دو کلاس برای دایره و مستطیل مینویسیم که این interface را پیادهسازی کنند:
// Circle.php
class Circle implements Shape {
public function draw() {
echo "Drawing Circle shape. \n";
}
}
// Rectangle.php
class Rectangle implements Shape {
public function draw() {
echo "Drawing Rectangle shape. \n";
}
}
حالا میخواهیم کلاسی را ایجاد کنیم که بر اساس ورودی، نمونههای مناسب از اشکال هندسی را بسازد. این کلاس را Factory نام میدهیم:
// ShapeFactory.php
class ShapeFactory {
public function getShape($shapeType) {
if ($shapeType === "CIRCLE") {
return new Circle();
} elseif ($shapeType === "RECTANGLE") {
return new Rectangle();
}
return null;
}
}
حالا میتوانیم از این Factory برای ایجاد نمونههای مورد نظر استفاده کنیم:
این مثال نشان میدهد که با استفاده از Factory Pattern، ما میتوانیم شیءهای مختلفی را بر اساس ورودی تولید کنیم بدون اینکه بخشهای کد اصلی را تغییر دهیم. این کار از اصول اصلی انعطافپذیری در برنامه نویسی شیءگرا است.