PHP 设计模式

来源:互联网 发布:smart 知乎 编辑:程序博客网 时间:2024/05/10 16:59

1、单例模式

<?php/** * 单例模式:对操作频繁的类只实例化一次,降低消耗 */class test {private static $object=null;//私有化构造函数,禁止外部实例化private function __construct() {echo mt_rand(1,10);}//私有化克隆函数,禁止复制对象实例private function __clone() {}//对外接口public static function to_object() {if(is_null(self::$object)) {self::$object= new self();}return self::$object;}public function test() {echo 2;}}test::to_object();$a= test::to_object();$a->test();//test 只实例化了1次


2、工厂模式

<?php/** * 工厂模式:在一个方法中根据条件生成不同的对象 *///基类abstract class work {abstract protected function count($a,$b);}//加法class add extends work {public function count($a,$b) {echo $a+$b;}}//减法class delete extends work {public function count($a,$b) {echo $a-$b;}}//生成对象class to_object {public static function index($k) {switch ($k) {case '+':return new add();break;case '-':return new delete();break;}}}//测试$object= to_object::index('+');echo $object->count(10,10);


3、观察者模式

<?php/** * 观察者模式 * @author: Mac * @date: 2012/02/22 */  class Paper{ /* 主题    */    private $_observers = array();     public function register($sub){ /*  注册观察者 */        $this->_observers[] = $sub;    }          public function trigger(){  /*  外部统一访问    */        if(!empty($this->_observers)){            foreach($this->_observers as $observer){                $observer->update();            }        }    }} /** * 观察者要实现的接口 */interface Observerable{    public function update();} class Subscriber implements Observerable{    public function update(){        echo "Callback\n";    }}$paper = new Paper();$paper->register(new Subscriber());$paper->trigger();


0 0
原创粉丝点击