PHP工厂模式、单例模式与注册树模式实例详解
这篇文章主要介绍了PHP工厂模式、单例模式与注册树模式,结合实例形式工厂模式、单例模式与注册树模式的基本概念、原理、实现方法及使用技巧,需要的朋友可以参考下。
本文实例讲述了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');