PHP设计模式
创建型模式(1)单例模式
通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次。 - 单例模式的要点有三个: - 一是某个类只能有一个实例; - 二是它必须自行创建这个实例; - 三是它必须自行向整个系统提供这个实例。 - 使用场景 - 例如数据库实例,一般都会走单例模式。 - 单例模式可以减少类的实例化 ```php /** * 框架核心加载-框架的所有类都需要通过该函数出去 * 1. 单例模式 * 2. 可以加载-Controller,Service,View,Dao,Util,Library中的类文件 * 3. 框架加载核心函数 * 使用方法:$this->load($class_name, $type) * @param string $class_name 类名称 * @param string $type 类别 */ public function load($class_name, $type) { $class_path = $this->get_class_path($class_name, $type); $class_name = $this->get_class_name($class_name); if (!file_exists($class_path)) InitPHP::initError('file '. $class_name . '.php is not exist!'); if (!isset(self::$instance['initphp'][$class_name])) { require_once($class_path); if (!class_exists($class_name)) InitPHP::initError('class' . $class_name . ' is not exist!'); $init_class = new $class_name; self::$instance['initphp'][$class_name] = $init_class; } return self::$instance['initphp'][$class_name]; } ``` ```php /** * 设计模式之单例模式 * $_instance必须声明为静态的私有变量 * 构造函数必须声明为私有,防止外部程序new类从而失去单例模式的意义 * getInstance()方法必须设置为公有的,必须调用此方法以返回实例的一个引用 * ::操作符只能访问静态变量和静态函数 * new对象都会消耗内存 * 使用场景:最常用的地方是数据库连接。 * 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。 */ class man{ //保存例实例在此属性中 private static $_instance; //构造函数声明为private,防止直接创建对象 private function __construct() { echo '我被实例化了!'; } //单例方法 public static function get_instance() { var_dump(isset(self::$_instance)); if(!isset(self::$_instance)) { self::$_instance=new self(); } return self::$_instance; } //阻止用户复制对象实例 private function __clone(){ trigger_error('Clone is not allow' ,E_USER_ERROR); } function test(){ echo("test"); } } // 这个写法会出错,因为构造方法被声明为private //$test = new man; // 下面将得到Example类的单例对象 $test = man::get_instance(); $test = man::get_instance(); $test->test(); // 复制对象将导致一个E_USER_ERROR. //$test_clone = clone $test; ```
顶部
收展
底部
[TOC]
目录
PHP设计模式概述
设计模式之开闭原则
设计模式之里氏代换原则
设计模式之接口隔离原则
创建型模式(1)单例模式
创建型模式(2)工厂模式
创建型模式(3)抽象工厂模式
创建型模式(4)原型模式
创建型模式(5)建造者模式
结构型模式(6)委托代理模式
结构型模式(7)装饰模式
结构型模式(8)外观模式
结构型模式(9)组合模式
结构型模式(10)适配器模式
结构型模式(11)桥接模式
结构型模式(12)享元模式
行为型模式(13)策略模式
行为型模式(14)解释器模式
行为型模式(15)观察者模式
行为型模式(16)模板方法模式
行为型模式(17)迭代器模式
行为型模式(18)命令模式
行为型模式(19)备忘录模式
行为型模式(20)状态模式
行为型模式(21)访问者模式
行为型模式(22)中介者模式
行为型模式(23)责任链模式
相关推荐
PHP基础
PHP函数
PHP算法
PHP版本