当前位置:首页 > 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.   static function createDatabase() 
  5.   { 
  6.     $db = new Database(); 
  7.     return $db
  8.   } 
  9.  
  10. $db = IMooc\Factory::createDatabase(); 

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

单例模式:

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

注册树模式:

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

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

分享到: