آموزش Factory Design Pattern

Image تحقیقات

آموزش Factory Design Pattern

به نام خدا

سلام خدمت شما دوستان

امروز میخوام به معرفی یک Design Pattern (دیزاین پترن) در زبان php به نام Factory  بپردازم.

این Design Pattern برای مواقعی کاربرد داره  مثلا ما چندتا کلاس php  تعریف کردیم ولی میخواهیم یک راه دسترسی و نمونه سازی از اون کلاس ها درست کنیم تا برای نمونه ساختن از اون کلاس ها از این راه اقدام کنند .

در واقع اسم factory (کارخانه) برای این گذاشتن که میتونیم نمونه هایی (objects) از کلاس هارو ایجاد کنیم بدون اینکه اطلاعات داشته باشیم این نمونه ها چجوری ساخته شده اند و چه مراحلی رو طی کردن.

مثال : کد زیر یک نمونه ساده از factory است.

<?php 

abstract class Product 
{
  private $sku;
  private $name;
  protected $type = null;


  public static function create($product_type)
 {
   
   switch($product_type)
   {
     case 'chair':

       return new Product_Chair();
       
       
      case 'table':
       return new Product_Table();
       
       
      case 'sofa':
       return new Product_Sofa();
       
       
      case 'bookcase':
       return new Product_Bookcase();
              
   }

}

}

class Product_Chair extends Product
{
  // protected $type = 'chair';
}

class Product_Table extends Product
{
  public function __construct(){
		echo "Product_Table is class";
	}
}

class Product_Bookcase extends Product
{
  public function __construct(){
		echo "Product_Bookcase is class";
	}
}

class Product_Sofa extends Product
{
	public function __construct(){
		echo "Product_Sofa is class";
	}
  
}
// /////////////////////////////

$obg1=Product::create('table');
echo '';
$obg2=Product::create('sofa');
echo '';
$obg3=Product::create('bookcase');

خروجی کد بالا :

Product_Table is class
Product_Sofa is class
Product_Bookcase is class

 

  • در خط 3 یک کلاس از نوع abstract تعریف شده که باعث میشه از اون کلاس نشه شی یا نمونه ایجاد کرد(آموزش کلاس abstract)
  • در خصوص 42 و 49 و 56 کلاس هایی تعریف شدن که از کلاس product مشتق شدن.حالا ما لازم دارین کاری کنیم که از یک روش معین بشه از این 3 کلاس نمونه(object) ساخت.
  • برای این کار یک تابع در کلاس product ایجاد کردیم.کار این تابع اینه که یک نام رو میگیره و طبق اون نام ، شی ای از کلاس مورد نظر برگشت میده.
  • در خصوط 65 ، 67 ، 69 هم تابع create را صدا زدیم و مقدارهای معین رو دادیم تا برامون یک شی بسازه و برگردونه. به جای اینکه خودمون شی ای بسازیم.

این یک نمونه از Factory Design Pattern بود.

امیدوارم آشنا شده باشین با کار این Design Pattern.

این جلسه هم به پایان رسید