PHP 单态设计模式

称呼:单态设计模式、单例设计模式、单件设计模式(可别被面试时候问倒了哦)

概念:Singleton(单例)模式主要作用是保证在面向对象编程语言设计编写的程序中,一个类Class只有一个实例存在。

用途:在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。

实现方法:

(1)如果想让一个类,只能有一个对象,就要先让这个类不能创建对象,且不能被克隆(__clone),因此需要将构造方法以及克隆方法私有化

(2)在类中提供一个静态方法,来创建对象

(3)在类中提供一个静态属性,用于存储实例化对象(如果对象存在,则不再实例化,从而保证对象只被实例化一次)

例子:

class Instance {
  //静态变量保存全局实例
  private static $_instance = null;

  //私有构造函数,防止外界实例化对象
  private function __construct() {
    echo ‘看我出现几次,就说明我被创建了几次<hr>‘;
  }

  //私有克隆函数,防止外办克隆对象
  private function __clone() {}

  //静态方法,单例模式统一访问入口
  static public function getInstance() {
    if (is_null(self::$_instance)) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }

}
Instance::getInstance();
Instance::getInstance();
Instance::getInstance();
时间: 2024-10-11 02:26:55

PHP 单态设计模式的相关文章

JAVA单态设计模式

核心--在类的内部把构造器私有化,同时在内部产生对象,并通过类.静态方法(static)返回实例化对象的引用   设计模式是在大量的实践总结和理论化之后优选的代码结果,编程风格,以及解决问题的思考方式.设计模式就像是经典的棋谱,不同的棋局我们用不同的棋谱. 单态设计模式:采取一定的方法保证在整个软件系统中,对某个类只能产生一个对象实例,并且该类只提供一个取得其对象的实例方法. 在java中实现单态模式只需要执行以下三步:     1.将类的构造方法的访问权限声明为private.这样就不能用ne

PHP 单态设计模式复习

单态设计模式,也可以叫做单例设计模式, 就是一个类只能让它生成一个对象,避免重复的NEW,影响运行效率(每NEW一个对象都会在内存中开辟一块空间) 示例代码 <?php /* * 单态设计模式 */ class DB{ //声明一个私有的静态属性 private static $obj = null; //私有化构造方法,只能让他在内部声明 private function __construct(){ echo "连接数据库的过程<br>"; } //通过此静态方法

Java中单态设计模式

Java中单态设计模式 2011-09-23 16:38:46|  分类: Java |  标签:technology!  |举报|字号 订阅 此博文是转自新浪博客中一名叫做"俊俊的BLOG“用户的一篇博文.感觉此博文确实很不错,所以在此拿出来分享一下!(笔者只是对其所举的代码略做了一些修改) 一概念: 设计模式:设计模式是指经过大量的实践总结和理论化之后的优选的代码结构.编程风格.以及解决问题的思路. 单态设计模式:采取一定的方法保证在整个软件系统中,对某个类只能产生一个对象实例,并且该类只提

单态设计模式 连接数据库的实例

<?php // final class DB //将类设置为final,禁止其他类继承它 class DB { private static $obj = null;//声明一个私有的,静态的成员属性$obj private function __construct() { //私有构造方法,只能在类的内部实例化对象 echo "连接数据库成功<br>"; } public static function getInstance() { // 通过此静态方法才能获取

单态设计模式(Singleton pattern)

单态(单例)设计模式 单态设计模式(Singleton pattern)就是要保证在整个程序中某个类只能存在一个对象,这个类不能再创建第二个对象. 单态设计模式的写法 私有化构造函数,阻止创建新对象. 单例设计模式: 在内存中对象只有一个存在. */ //饿汉式 class Student { private Student(){} private static Student s = new Student(); public static Student getInstance() { re

Java单态设计模式,扫盲贴

class Person { String name; private static final Person p = new Person(); private Person() { name = "张三"; } public static Person getP() { return p; } } public class TestSingleDemo2 { public static void main(String args[]) { Person p = null; p =

写一个单态设计模式、一个工厂设计模式、代理设计模式

单态: package TKaoShi; public class DanTaiPerson { private static DanTaiPerson dtp; private String name; private char sex; private DanTaiPerson(){ } private DanTaiPerson(String name,char sex){ this.name=name; this.sex=sex; } public static DanTaiPerson

单态设计模式

1 package com.cn; 2 3 public class Test { 4 public static void main(String agrs[]){ 5 Person p1 = Person.getInstances(); 6 Person p2 = Person.getInstances(); 7 System.out.println(p1==p2); 8 } 9 } 10 class Person{ 11 static Person person = new Person(

PHP 对象 单态(单例,单件)设计模式 static

<?php header('content-type:text/html;charset=utf-8'); /*  *单态设计模式 单例  单件  *一个类只能创建一个对象   *1.如果想让一个类,只能有一个对象,就要先让这个类不能创建对象,将构造方法private  *2.可以在类的内部使用一个静态方法来创建对象  */     class Persion{         //使用静态成员实现单态设计         static $obj = null;         private