浏览 4881 次
锁定老帖子 主题:php 常用的两个设计模式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-07
工厂模式提供了一个在实时状态下实例化对象的机制。 <?php class creditCardProcessor { public static function factory($provider) { switch ($provider) { case 'Verisign': //include "Verisign.php"; echo 'Verisign.php'; break; case 'PayPal': //include "Paypal.php"; echo '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 = mysql_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); // 失败 转载地址:http://www.xuekaifa.com/article/20100626/000067.html 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-01
不是很明白
|
|
返回顶楼 | |
发表时间:2011-03-08
mysql 集群是什么意思呢?
谁能给详细的介绍一下呢? |
|
返回顶楼 | |
发表时间:2011-05-03
我也不是很明白
|
|
返回顶楼 | |
发表时间:2011-05-04
何必 switch 呢,PHP 和 Python 一样可以动态实例化的。
关于常用设计模式,官网手册也有说明。 我只是觉得,由于 PHP 只有 Request 的生命期,所以所谓的单例模式并不是真正的单例。 而我们也不必把 Java 中的设计模式实现习惯照搬 PHP 中,如果要“单例”,写一个只有静态方法和静态属性的类就是单例了。这个在 Java 或者 Python 的 Web 应用都做不到的,因为只有 PHP 会以 Request 为最大请求周期。 |
|
返回顶楼 | |