Design Pattern trong PHP



Nguyên lý Design Pattern của Microsoft là: "Tài liệu giới thiệu các Pattern và sau đó trình bày chúng trong Repository hoặc Catalogue, mà được tổ chức để giúp bạn xác định vị trí kết nối chính xác của các Pattern mà giải quyết vấn đề của bạn."

Ví dụ về Design Pattern trong PHP

Singleton Pattern trong PHP

Một Class có một instance (sự thể hiện). Nó cung cấp truy cập global trỏ tới nó. Ví dụ sau sẽ giải thích về khái niệm singleton trong PHP.

<?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()); 
?>
Quảng cáo

Ví dụ trên được triển khai dựa trên việc tạo phương thức tĩnh là getInstance().

Factory Pattern trong PHP

Một Class tạo đối tượng và bạn muốn sử dụng đối tượng đó. Ví dụ sau giải thích về Factory trong PHP.

<?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()); 
?>

Khó khăn chính với Factory Pattern là nó sẽ tăng tính phức tạp và nó không đáng tin cậy cho các lập trình viên giỏi.

Quảng cáo

Strategy pattern trong PHP

Strategy Pattern tạo một Family Algorithm và bao đóng mỗi giải thuật. Ở đây, mỗi giải thuật nên là có thể trao đổi bên trong Family đó.

<?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 "Sắp xếp theo ID:\n";
   print_r($collection->elements);
   
   $collection->setComparator(new DateComparator());
   $collection->sort();
   
   echo "Sắp xếp theo ngày tháng:\n";
   print_r($collection->elements);
?>

Mô hình MVC trong PHP

MVC là viết tắt của Model View Control. Trong đó, View hoạt động như GUI, Model hoạt động như Back End và Control hoạt động như một Adapter. Ở đây, 3 phần được liên kết với nhau. Nó sẽ truyền data và truy cập data giữa chúng với nhau.

Mô hình Model View Control

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn ở Hà Nội có thể tham gia khóa học thứ 9 của vietjackteam (đang tuyển sinh) vào cuối tháng 10/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng. Khóa online= Đi phỏng vấn, Khóa offline= Đi phỏng vấn+ 1.5 tháng thực tập ngoài doanh nghiệp.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Từ tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 250k cho khóa học, các bạn có thể trả lại tiền nếu không hài lòng về chất lượng trong 1 tháng, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại Khóa học Java Online trên Udemy

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học PHP phổ biến khác tại VietJack:




Tài liệu giáo viên