Blogger Information
Blog 42
fans 3
comment 2
visits 93601
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP的设计模式
Whitney的博客
Original
1376 people have browsed it

PHP的五大设计模式

单例模式

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例

单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。

单例模式分3中:懒汉式单例,饿汉式单例,登记式单例

单例模式有以下3个特点:

  1. 只能有一个实例

  2. 必须自行创建这个实例

  3. 必须给其他对象提供这个实例

PHP使用单例模式的主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。每一个的new操作都会消耗系统和内存的资源。

<?php 

class Single{
    
    //声明一个私有的实例变量
    private $name;
    
    //声明一个私有构造方法,为了防止外部代码使用new来创建对象
    private function __construct(){

    }
   
    //声明一个静态变量(保存在类中唯一的一个实例)
    static public $instance;

    //声明一个静态方法,用于检测是否有实例对象
    static public function getinstance(){
         if(!self::$instance)self::$instance = new self();
         return self::$instance;
    }

    public function setname($n){
         $this->name = $n;
    }

    public function getname(){
         return $this->name;
    }
}


$oa = Single::getinstance();
$ob = Single::getinstance();
$oa->setname('hello world');
$ob->setname('good morning');
echo $oa->getname();//good morning
echo $ob->getname();//good morning

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

工厂模式

工厂模式是我们最常用的实例化对象模式,使用工厂方法代替new操作的一种模式。

使用工厂模式的好处是,通过你想要更改所实例化的类名等,则只需要更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。

实例

<?php 

header('Content-Type:text/html;charset=utf-8');

/**
 *简单工厂模式(静态工厂方法模式)
 */

//Interface people 人类
interface people{
    public function say();
}

//Class man 继承people的***类
class man implements people{
    public function say(){
        echo '我是***';
    }
}

//Class women 继承people的***类
class women implements people{
    public function say(){
        echo '我是***';
    }
}

// Class SimpleFactoty 工厂类
class SimpleFactory{
    //简单工厂里的静态方法,用于创建man对象
    static public createMan(){
        return new man();
    }

    //简单工厂里的静态方法,用于创建woman对象
    static public createWomen(){
        return new woman();
    }
}


$man = SimpleFactory::createMan();
$man->say();
$woman = SimpleFactory::createWomen();
$woman->say();
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例




Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post