当前位置:首页 > PHP教程 > php应用 > 列表

PHP工厂模式、单例模式与注册树模式实例详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-24 20:20:23 浏览: 评论:0 

这篇文章主要介绍了PHP工厂模式、单例模式与注册树模式,结合实例形式工厂模式、单例模式与注册树模式的基本概念、原理、实现方法及使用技巧,需要的朋友可以参考下。

本文实例讲述了PHP工厂模式、单例模式与注册树模式,分享给大家供大家参考,具体如下:

三种基本设计模式

1、工厂模式:工厂方法或者类生成对象,而不是在代码中直接new

2、单例模式:使某个类的对象仅允许创建一个

3、注册模式:全局共享和交换对象

工厂模式:

  1. <?php 
  2. namespace IMooc; 
  3. class Factory 
  4. { 
  5.   static function createDatabase() 
  6.   { 
  7.     $db = new Database(); 
  8.     return $db; 
  9.   } 
  10. } 
  11.  
  12. $db = IMooc\Factory::createDatabase(); 

工厂模式的好处是,避免Database这个类,在很多个php文件都进行new操作,如果Database这个类发生了一些变更(修改了名字或者参数),那这时候如果不工厂模就需要修改多出了,使用工厂模式,就只需要修改工厂方法即可。

单例模式:

  1. <?php 
  2. namespace IMooc; 
  3. class Database 
  4. { 
  5.   protected $db; 
  6.   private function __construct() 
  7.   { 
  8.   } 
  9.   // 获取数据库操作实例 
  10.   static function getInstance() 
  11.   { 
  12.     if(self::$db){ 
  13.       return self::$db; 
  14.     }else{ 
  15.       self::$db = new self(); 
  16.       return self::$db; 
  17.     } 
  18.   } 
  19. } 
  20. // 无论调用多少次,只会创建一个实例 
  21. $db = IMooc\Database::getInstance(); 
  22. $db = IMooc\Database::getInstance(); 
  23. $db = IMooc\Database::getInstance(); 
  24. $db = IMooc\Database::getInstance(); 

注册树模式:

  1. <?php 
  2. namespace IMooc; 
  3. class Register 
  4. { 
  5.   protected static $objects; 
  6.   static function set($alias, $object) 
  7.   { 
  8.     self::$objects[$alias] = $object; 
  9.   } 
  10.   static function get($name) 
  11.   { 
  12.     return self::$objects[$name]; 
  13.   } 
  14.   static function _unset($alias) 
  15.   { 
  16.     unset(self::$objects[$alias]); 
  17.   } 
  18. } 
  19. $db = \IMooc\Register::get('db1');

Tags: PHP工厂模式 PHP单例模式

分享到: