Chinaunix首页 | 论坛 | 博客
  • 博客访问: 730150
  • 博文数量: 204
  • 博客积分: 6552
  • 博客等级: 准将
  • 技术积分: 2724
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-29 18:41
文章分类

全部博文(204)

文章存档

2012年(6)

2011年(66)

2010年(99)

2009年(31)

2008年(2)

我的朋友

分类:

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);          // 失败

阅读(383) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~