单例模式按字面来看就是指某一个类只存在一个实例,这一点其实是与静态方法是相同的,只存在一个实例的好处是当我们需要使用某个类时只需要实例化一次,不需要每次都去new,极大的降低了资源的耗费,比如说数据库的连接类。
那么单例模式与静态方法有什么区别呢?
虽然这样说,但到底该选用单例还是静态,我们还需要视实际情况而定,在设计模式中我们应该做到的是:减少代码,增加稳定,方便理解,提升性能,减少开销。 具体使用例子: <?php /** * by www.codetc.com */ class Mysql{ //该属性用来保存实例 private static $instance; private $conn; //构造函数为private,防止创建对象 private function __construct(){ $this->conn = mysql_connect('localhost','root','123456'); //... } //创建一个用来实例化对象的方法 public static function getInstance(){ if(!(self::$instance instanceof self)){ self::$instance = new self; } return self::$instance; } //防止对象被复制 public function __clone(){ trigger_error('Clone is not allowed !'); } //... public function query(){ //do something } } //使用单例调用类中的方法,不能new 和 clone Mysql::getInstance()->query(); ?>
文章来源 CODETC,欢迎分享,转载请注明地址:
http://www.codetc.com/article-128-1.html
|