分类:
2011-09-06 12:15:23
给大家介绍2个php常用的设计模式,工厂模式和单列模式。
1. 工厂模式
工厂模式提供了一个在实时状态下实例化对象的机制。
class creditCardProcessor
{
public static function factory($provider)
{
switch ($provider)
{
case 'Verisign':
include "Verisign.php";
break;
case 'PayPal':
include "Paypal.php";
break;
default:
exit("Invalid CC Provider");
}
return new $provider;
}
}
$cc = creditCardProcessor::factory('PayPal');
?>
2. 单例模式
单例模式在确保只有一个实例运行时使用,也可以用来防止类通过clone来复制。
class dbMysgl
{
private static $conn;
private function __construct()
{
$this->conn = mysgl connect(host, login, pass);
}
public static function singleton()
{
if(!self::$conn)
{
$c = __CLASS__;
self::$conn = new $c;
}
return self::$conn;
}
public function __clone()
{
trigger_error("Only one connection may exist");
}
}
$db = new dbMysgl(); // 失败
$db = dbMysgl::singleton(); // 使用的正确方法
$db2 = clone($db); // 失败