آموزش PHP

آموزش PHP - الگوهای طراحی

الگوی طراحی MVC در تئوری اینگونه هستند: "سند الگوها را معرفی می کنند و سپس آنها را در یک Container یا کاتالوگ ارائه می دهد که به شما در یافتن ترکیب مناسبی از الگوهای دارای مشکل کمک می کنند.

نمونه هایی از الگوهای طراحی

singleton

کلاس یک نمونه دارد که نقطه دسترسی جهانی را به آن می دهد، کد زیر مفهوم singleton را توضیح می دهد.

<?php
   class Singleton {
      public static function getInstance() {
         static $instance = null;
         
         if (null === $instance) {
            $instance = new static();
         }
         return $instance;
      }
      protected function __construct() {
      }
      
      private function __clone() {
      }
      
      private function __wakeup() {
      }
   }
   
   class SingletonChild extends Singleton {
   }
   
   $obj = Singleton::getInstance();
   var_dump($obj === Singleton::getInstance());
   
   $anotherObj = SingletonChild::getInstance();
   var_dump($anotherObj === Singleton::getInstance());
   var_dump($anotherObj === SingletonChild::getInstance()); 
?>

مثال بالا براساس روش ایجاد استاتیک ()getInstance انجام شده است.

Factory

 یک کلاس ساده، شی را ایجاد می کند و می توانید از آن شیء استفاده کنید. مثال زیر در مورد الگوی طراحی کارخانه توضیح داده می شود.

<?php
   class Automobile {
      private $bikeMake;
      private $bikeModel;
      
      public function __construct($make, $model) {
         $this->bikeMake = $make;
         $this->bikeModel = $model;
      }
      
      public function getMakeAndModel() {
         return $this->bikeMake . ' ' . $this->bikeModel;
      }
   }
   
   class AutomobileFactory {
      public static function create($make, $model) {
         return new Automobile($make, $model);
      }
   }
   
   $pulsar = AutomobileFactory::create('ktm', 'Pulsar');
   print_r($pulsar->getMakeAndModel());
   
   class Automobile {
      private $bikeMake;
      private $bikeModel;
      
      public function __construct($make, $model) {
         $this->bikeMake = $make;
         $this->bikeModel = $model;
      }
      
      public function getMakeAndModel() {
         return $this->bikeMake . ' ' . $this->bikeModel;
      }
   }
   
   class AutomobileFactory {
      public static function create($make, $model) {
         return new Automobile($make, $model);
      }
   }
   t$pulsar = AutomobileFactory::create('ktm', 'pulsar');
   
   print_r($pulsar->getMakeAndModel()); 
?>

مشکل اصلی با الگوی کارخانه این است که پیچیدگی را افزایش می دهد و برای برنامه نویسان خوب قابل اعتماد نمی باشد.

الگو استراتژی

الگوریتم استراتژی یک الگوریتم خانوادگی را ایجاد می کند و هر الگوریتم را محاسبه می کند. در اینجا هر الگوریتم باید بین خانواده تغییر کند.

<?php
   $elements = array(
      array(
         'id' => 2,
         'date' => '2011-01-01',
      ),
      array(
         'id' => 1,
         'date' => '2011-02-01'
      )
   );
   
   $collection = new ObjectCollection($elements);
   
   $collection->setComparator(new IdComparator());
   $collection->sort();
   
   echo "Sorted by ID:n";
   print_r($collection->elements);
   
   $collection->setComparator(new DateComparator());
   $collection->sort();
   
   echo "Sorted by date:n";
   print_r($collection->elements);
?>

کنترل مدل view

نمایش یا view به عنوان GUI عمل می کند، عملکردهای مدل به عنوان آداپتوری میان Back End و کنترل فعالیت ها عمل می کند. در اینجا سه ​​بخش با یکدیگر همبستگی دارند. این امر داده ها را منتقل کرده و داده ها را میان یکدیگر انتقال می دهد.

model view control

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...