1. 工廠模式
工廠模式提供了一個在實時狀態下實例化對象的機制。
<?php
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); // 失敗