评论

收藏

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

开发技术 开发技术 发布于:2021-08-20 15:51 | 阅读数:491 | 评论:0

本文实例讲述了PHP工厂模式、单例模式与注册树模式。分享给大家供大家参考,具体如下:
三种基本设计模式
1、工厂模式:工厂方法或者类生成对象,而不是在代码中直接new
2、单例模式:使某个类的对象仅允许创建一个
3、注册模式:全局共享和交换对象
工厂模式:
<?php
namespace IMooc;
class Factory
{
  static function createDatabase()
  {
  $db = new Database();
  return $db;
  }
}
$db = IMooc\Factory::createDatabase();
工厂模式的好处是,避免Database这个类,在很多个php文件都进行new操作,如果Database这个类发生了一些变更(修改了名字或者参数),那这时候如果不工厂模就需要修改多出了,使用工厂模式,就只需要修改工厂方法即可。
单例模式:
<?php
namespace IMooc;
class Database
{
  protected $db;
  private function __construct()
  {
  }
  // 获取数据库操作实例
  static function getInstance()
  {
  if(self::$db){
    return self::$db;
  }else{
    self::$db = new self();
    return self::$db;
  }
  }
}
// 无论调用多少次,只会创建一个实例
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
注册树模式:
<?php
namespace IMooc;
class Register
{
  protected static $objects;
  static function set($alias, $object)
  {
  self::$objects[$alias] = $object;
  }
  static function get($name)
  {
  return self::$objects[$name];
  }
  static function _unset($alias)
  {
  unset(self::$objects[$alias]);
  }
}
$db = \IMooc\Register::get('db1');
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/github_26672553/article/details/53886889

关注下面的标签,发现更多相似文章