Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
Hôm nay mình chia sẻ tới mọi người một khía cạnh khác trên blog cá nhân của mình - code PHP. Mình giới thiệu tới mọi người 2 mẫu design patterns rất phổ biến và đơn giản, đó là mẫu Singleton và mẫu Registry.
Singleton là mẫu thiết kế rất phổ biến trong OOP. Với singleton, sẽ hạn chế việc tạo nhiều thực thể trên cùng một lớp đối tượng, mà thay vào đó nó sẽ cho phép chúng ta sử dụng chung một thực thể, hay nói một cách khác là dùng một shared instance. Việc này sẽ có lợi điểm cho bộ nhớ của hệ thống, không phải cứ phát sinh đối tượng tùm lum ra.
<?php class Singleton { private static $_instance; protected function __contruct(){} public static function getInstance() { if (!isset (self::$_instance)) self::$_instance = new self; return self::$_instance; { }
Registry: Đây là một mẫu thiết kế cũng đơn giản và cũng rất phổ biến. Mẫu thiết kế này cung cấp một cơ chế để lưu trữ các giá trị toàn cục (global) một cách dễ quản lý hơn.
<?php class Registry { private static $_instance; private $_storage; protected function __construct(){} public static function getInstance() { if (!isset (self::$_instance)) self::$_instance = new self; return self::$_instance; } // Xét giá trị thông qua magic call public function __set($name, $value) { $this->_storage[$name] = $value; } // Lấy giá trị đã lưu thông qua magic call public function __get($name) { if (isset ($this->_storage[$name])) return $this->_storage[$name]; throw new Exception ('Không tìm thấy giá trị'); } protected function __clone(){} }
Bình luận (0)
Add Comment