首页 > 作文

深入分析PHP设计模式

更新时间:2023-04-08 22:29:52 阅读: 评论:0

1、单例模式

一个类,只能允许有一个对象存在

<?phpclass test{  protected function __construct(){  }  public static function getinstance(){    $_test = new test();    return $_test;  }}$test = test::getinstance();var_dump($test);?>

2、工厂模式

工厂模式,顾名思义,如同工厂一样,你把原材料放入工厂中,出来的是成品,而你并不需要知道工厂里做了什么,工厂模式主要用于解耦。

把对象的创建和使用的过程分开,比如: classa 调用 classb,那么 classa 只调用classb 的方法,
至于实例化 classb 则在工厂内实现。这样既减少了代码的重复使用,也方便对 classb 的后期维护。
如果 classb 实例化过程很复杂,使用简单工厂模式就会发现外部无需关注复杂的实例化,只管调用 classb 的方法即可,减少错误

interface mysql{   public function connect();} class mysqli2 implements mysql{  public function connect(){    echo 'mysqli';  }} class pdo2 implements mysql{  public funwhetherction connect(){    echo 'pdo';  }}class mysqlfactory{  static public function factory($class_name){    return new $class_name();  }}$obj = mysqlfactory::factory('pdo2');$obj->connect();

3、注册模式

注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,

在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。

<?phpclass register{    protected static $objects;    function t($alias,$object)//将对象注册到全局的树上    {      lf::$objects[$alias]=$object;//将对象放到树上    }    static function get($name){      return lf::$objects[$name];//获取某个注册到树上的对象     }  function _unt($alias)  {     unt(lf::$objects[$alias]);//移除某个注册到树上的对象。    }}\auto\register::t('single',$single);$single = \auto\register::get('single');var_dump($single);

4、适配器模式

将一个类的接口转换成客户希望的另外一个接口。

//目标角色interface aims{  public function newmethod1();  public function newmethod2();} //需要被适配的类(adaptee)class man{  public function oldmethod1()  {    符合的读音echo 'man';  }   public function oldmethod2()  {    echo '男人';  }} //需要被适配的类(adaptee)class woman{  public function oldmet广州人事局hod1()  {    echo 'woman';  }   public function oldmethod2()  {    echo '女人';  }} //适配器,class adapters implements aims{  private $adaptee;  public function __construct($adaptee)  {    $this->adaptee = $adaptee;  }   public function newmethod1()  {    //以少量的代码对被适配者作出适配    echo 'x :';    $this->adaptee->oldmethod1();  }   public function newmethod2()  {    echo 'x name :';    $this->adaptee->oldmethod2();  }} $adapter1 = new adapters(new man);$adapter1->newmethod1();$adapter2 = new adapters(new woman);$adapter2->newmethod2();

5、策略模式

这是一个男人和女人的问题水落石出的意思,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境。

urstrategy.php<?php/* * 声明策略文件的接口,约定策略包含的行为。 */interface urstrategy{  function showad();  function showcategory();}femaleur.php<?phpclass femaleur implements urstrategy{  function showad(){    echo "2016冬季女装";  }  function showcategory(){    echo "女装";  }}maleur.php<?phpclass maleur implements urstrategy{  function showad(){    echo "iphone6s";  }  function showcategory(){    echo "电子产品";  }}page.php//执行文件<?phprequire_once 'loader.php';class page{  protected $strategy;  function index(){    echo "ad";    $this->strategy->showad();    echo "<br>";    echo "category";    $this->strategy->showcategory();    echo "<br>";  }  function tstrategy(urstrategy $strategy){    $this->strategy=$strategy;  }}$page = new page();if(ist($_get['male'])){  $strategy = new maleur();}el {  $strategy = new femaleur();}$page->tstrategy($strategy);$page->index();

6、原型模式

不常用,大的对象类才使用,表现在clone

7、观察者模式

从面向过程的角度来看,首先是观察者向主题注册,注册完之后,主题再通知观察者做出相应的操作,整个事情就完了

/** * 事件产生类 * class eventgenerator */abstract class eventgenerator{  private $obrvers = [];  //增加观察者  public function add(obrver $obrver)  {    $this->obrvers[] = $obrver;  }  //事件通知  public function notify()  {    foreach ($this->obrvers as $obrver) {      $you shut upobrver->update();    }  }}/** * 观察者接口类 * interface obrver */interface obrver{  public function update($event_info = null);}/** * 观察者1 */class obrver1 implements obrver{  public function update($event_info = null)  {    echo "观察者1 收到执行通知 执行完毕!\n";  }}/** * 观察者1 */class obrver2 implements obrver{  public function update($event_info = null)  {    echo "观察者2 收到执行通知 执行完毕!\n";  }}/** * 事件 * class event */class event extends eventgenerator{  /**   * 触发事件   */  public function trigger()  {    //通知观察者    $this->notify();  }}//创建一个事件$event = new event();//为事件增加旁观者$event->add(new obrver1());$event->add(new obrver2());//执行事件 通知旁观者$event->trigger();

以上就是深入分析php设计模式的详细内容,更多关于php设计模式的资料请关注www.887551.com其它相关文章!

本文发布于:2023-04-08 22:29:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/a5c59469269ffd34b36d48ed50a2b44f.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:深入分析PHP设计模式.doc

本文 PDF 下载地址:深入分析PHP设计模式.pdf

标签:观察者   模式   对象   工厂
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图