TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 610 subscribers
Post #70 182
#design_patterns
مورد بعدی دیزاین پترن Factory هست.
این دیزاین پترن در PHP برای ایجاد شئ ها به صورت پویا و بر اساس نیازها و شرایط مختلف استفاده می‌شود. این الگو به شما اجازه می‌دهد که بدون نیاز به دستکاری کد اصلی، شئ های مختلف را ایجاد کنید.

مثال:
interface Fruit {
public function color();
}

class Banana implements Fruit {
public function color() {
echo "yellow";
}
}

class Apple implements Fruit {
public function color() {
echo "red";
}
}

class FruitFactory {
public function createFruit($fruitName) {
if ($fruitName === 'banana') {
return new Banana();
} elseif ($fruitName === 'apple') {
return new Apple();
}
}
}

در مثال بالا، ابتدا یک اینترفیس Fruit تعریف شده است که توابعی مانند color را برای میوه ها تعریف می‌کند. سپس دو کلاس Banana و Apple ایجاد شده‌اند که از رابط Fruit ارث‌بری می‌کنند و توابع color را پیاده‌سازی می‌کنند.
در نهایت، کلاس FruitFactory تعریف شده است که به عنوان یک فکتوری برای ایجاد شیء‌های میوه عمل می‌کند. متد createFruit در این کلاس یک نوع میوه را به عنوان ورودی دریافت می‌کند و بر اساس نوع میوه مورد نظر، یک شئ مربوطه را ایجاد و برمی‌گرداند.

برای استفاده از الگوی Factory به روش زیر عمل می کنیم:
$factory = new FruitFactory();

$banana = $factory->createFruit('banana');
$banana->color();

Result:
yellow

$apple = $factory->createFruit('apple');
$apple->color();

Result:
red

با استفاده از الگوی Factory، ما می‌توانیم به راحتی شئ های مختلف را ایجاد کنیم، بدون اینکه بخش‌های دیگر برنامه را تغییر دهیم. این الگو به ما امکان می‌دهد به سادگی از تغییرات در ایجاد شئ ها برای موارد خاص استفاده کنیم.
.
  • 👍 2
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →