ووینو
  • صفحه اصلی
  • دستیار هوشمند
  • متخصصان
  • فروشگاه
  • چطور کار می‌کند
  • جلسات من
ورودثبت‌نام

      Image placeholder
      ووینو
      متخصص‌های تاییدشده، جلسه‌ی آنلاین، دوره‌ها و فروشگاه امن — یک‌جا.
      پشتیبانی: ۰۲۱۹۱۵۵۰۹۵۳
      چطور کار می‌کندمتخصص‌هافروشگاهسوالات متداولارتباط با ماشرایط و قوانینحریم خصوصیآیین‌نامه متخصصمتخصص شو
      نماد اعتماد الکترونیکی

      پاسخ‌های هوش مصنوعی صرفاً جنبه اطلاع‌رسانی اولیه دارند و جایگزین تشخیص و نظر متخصص نیستند. در شرایط اضطراری با اورژانس (۱۱۵) یا اورژانس اجتماعی (۱۲۳) تماس بگیرید.

      1. وینو
      2. /
      3. مهندس
      4. /
      5. پست متخصص
      محمد گلمحمدی
      محمد گلمحمدیبرنامه نویس · ⭐ 5.0 · ۲۸ مرداد ۱۴۰۵

      ساده‌ترین تعریف Factory Pattern

      ساده‌ترین تعریف Factory Pattern

      ساده‌ترین تعریف Factory Pattern در PHP اینه: به‌جای اینکه خودت مستقیم مشخص کنی چه کلاسی ساخته بشه، ساختن Object رو می‌سپاری به یک Factory. بدون Factory

      php
      $payment = new ZarinpalPayment();

      اگر بعداً بخوای درگاه رو عوض کنی، باید جاهای مختلف کدت رو تغییر بدی. با Factory

      php
      interface Payment
      {
          public function pay();
      }
      
      
      class ZarinpalPayment implements Payment
      {
          public function pay()
          {
              return "پرداخت با زرین‌پال";
          }
      }
      php
      class IdpayPayment implements Payment
      {
          public function pay()
          {
              return "پرداخت با IDPay";
          }
      }

      حالا Factory:

      php
      
      class PaymentFactory
      {
          public static function make(string $type): Payment
          {
              return match ($type) {
                  'zarinpal' => new ZarinpalPayment(),
                  'idpay'    => new IdpayPayment(),
                  default    => throw new Exception('درگاه نامعتبر است'),
              };
          }
      }
      

      استفاده:

      php
      
      $payment = PaymentFactory::make('zarinpal');
      
      
      echo $payment->pay();
      

      خروجی: پرداخت با زرین‌پال یا:

      php
      $payment = PaymentFactory::make('idpay');
      
      echo $payment->pay();

      خروجی: پرداخت با IDPay پس Factory دقیقاً چه کار می‌کند؟ به‌جای اینکه کد اصلیت درگیر این باشد:

      php
      
      if ($type === 'zarinpal') {
          $payment = new ZarinpalPayment();
      } elseif ($type === 'idpay') {
          $payment = new IdpayPayment();
      }
      

      می‌نویسی:

      php
      $payment = PaymentFactory::make($type);

      یعنی: «من نمی‌خوام بدونم چه Objectی ساخته میشه؛ Factory خودش تصمیم بگیره.»

      محمد گلمحمدیسوالی درباره این موضوع داری؟
      از محمد گلمحمدی بپرس یا جلسه آنلاین رزرو کن
      سوال بپرسرزرو جلسه