本文实例讲述了PHP工厂模式、单例模式与注册树模式。分享给大家供大家参考,具体如下:
三种基本设计模式
1、工厂模式:工厂方法或者类生成对象,而不是在代码中直接new
2、单例模式:使某个类的对象仅允许创建一个
3、注册模式:全局共享和交换对象
工厂模式:
1
2
3
4
5
6
7
8
9
10
|
<?php
namespace IMooc;
class Factory
{
static function createDatabase()
{
$db = new Database();
return $db ;
}
}
|
1
|
$db = IMooc\Factory::createDatabase();
|
工厂模式的好处是,避免Database这个类,在很多个php文件都进行new操作,如果Database这个类发生了一些变更(修改了名字或者参数),那这时候如果不工厂模就需要修改多出了,使用工厂模式,就只需要修改工厂方法即可。
单例模式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?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();
|
注册树模式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?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