好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】

本文实例讲述了PHP中常用的三种设计模式。分享给大家供大家参考,具体如下: 1.单例模式 在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo。 private。单例类的加强:禁止克隆。 bark(); // 下面将得到Example类的单例对象 $test = Example::singleton(); $test->bark(); // 复制对象将导致一个E_USER_ERROR. $test_clone = clone $test; ?> PHP对象克隆__clone()介绍 2. 工厂模式 width = $width; $this->height = $height; } public function getCircum() { return 2 * ($this->width + $this->height); } public function getArea() { return $this->width * $this->height; } } // 定义圆类 class Circle implements IShape { private $radii; public function __construct($radii) { $this->radii = $radii; } public function getCircum() { return 2 * M_PI * $this->radii; } public function getArea() { return M_PI * pow($this->radii, 2); } } // 根据传入的参数个数不同来创建不同的形状。 class FactoryShape { public static function create() { switch (func_num_args()) { case 1: return new Circle(func_get_arg(0)); break; case 2: return new Rectangle(func_get_arg(0), func_get_arg(1)); break; } } } // 矩形对象 $c = FactoryShape::create(4, 2); var_dump($c->getArea()); // 圆对象 $o = FactoryShape::create(2); var_dump($o->getArea());

3. 观察者模式 name; } } // 可被观察类 class Observable implements IObservable { protected $observers = array(); public function addObserver($observer) { if (!($observer instanceof IObserver)) { return; } $this->observers[] = $observer; } public function removeObserver($observer_name) { foreach ($this->observers as $index => $observer) { if ($observer->getName() === $observer_name) { array_splice($this->observers, $index, 1); return; } } } } // 模拟一个可以被观察的类:RadioStation class RadioStation extends Observable { public function addListener($listener) { foreach ($this->observers as $observer) { $observer->onListen($this, $listener); } } } // 模拟一个观察者类 class RadioStationLogger extends Observer { protected $name = 'logger'; public function onListen($sender, $args) { echo $args, ' join the radiostation. '; } } // 模拟另外一个观察者类 class OtherObserver extends Observer { protected $name = 'other'; public function onListen($sender, $args) { echo 'other observer.. '; } } $rs = new RadioStation(); // 注入观察者 $rs->addObserver(new RadioStationLogger()); $rs->addObserver(new OtherObserver()); // 移除观察者 $rs->removeObserver('other'); // 可以看到观察到的信息 $rs->addListener('cctv'); ?> php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

查看更多关于PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】的详细内容...

  阅读:35次