深入分析PHP设计模式
1、单例模式
一个类,只能允许有一个对象存在
2、工厂模式
工厂模式,顾名思义,如同工厂一样,你把原材料放入工厂中,出来的是成品,而你并不需要知道工厂里做了什么,工厂模式主要用于解耦。
把对象的创建和使用的过程分开,比如:ClassA调用ClassB,那么ClassA只调用ClassB的方法,
至于实例化ClassB则在工厂内实现。这样既减少了代码的重复使用,也方便对ClassB的后期维护。
如果ClassB实例化过程很复杂,使用简单工厂模式就会发现外部无需关注复杂的实例化,只管调用ClassB的方法即可,减少错误
interfacemysql{ publicfunctionconnect(); } classmysqli2implementsmysql{ publicfunctionconnect(){ echo'mysqli'; } } classpdo2implementsmysql{ publicfunctionconnect(){ echo'pdo'; } } classmysqlFactory{ staticpublicfunctionfactory($class_name){ returnnew$class_name(); } } $obj=mysqlFactory::factory('pdo2'); $obj->connect();
3、注册模式
注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,
在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。
4、适配器模式
将一个类的接口转换成客户希望的另外一个接口。
//目标角色 interfaceAims { publicfunctionnewMethod1(); publicfunctionnewMethod2(); } //需要被适配的类(Adaptee) ClassMan { publicfunctionoldMethod1() { echo'man'; } publicfunctionoldMethod2() { echo'男人'; } } //需要被适配的类(Adaptee) ClassWoman { publicfunctionoldMethod1() { echo'woman'; } publicfunctionoldMethod2() { echo'女人'; } } //适配器, ClassAdaptersimplementsAims { private$adaptee; publicfunction__construct($adaptee) { $this->adaptee=$adaptee; } publicfunctionnewMethod1() { //以少量的代码对被适配者作出适配 echo'sex:'; $this->adaptee->oldMethod1(); } publicfunctionnewMethod2() { echo'sexname:'; $this->adaptee->oldMethod2(); } } $adapter1=newAdapters(newMan); $adapter1->newMethod1(); $adapter2=newAdapters(newWoman); $adapter2->newMethod2();5、策略模式
这是一个男人和女人的问题,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境。
UserStrategy.php strategy->showAd(); echo"
"; echo"Category"; $this->strategy->showCategory(); echo"
"; } functionsetStrategy(UserStrategy$strategy){ $this->strategy=$strategy; } } $page=newPage(); if(isset($_GET['male'])){ $strategy=newMaleUser(); }else{ $strategy=newFemaleUser(); } $page->setStrategy($strategy); $page->index();6、原型模式
不常用,大的对象类才使用,表现在clone
7、观察者模式
从面向过程的角度来看,首先是观察者向主题注册,注册完之后,主题再通知观察者做出相应的操作,整个事情就完了
/** *事件产生类 *ClassEventGenerator */ abstractclassEventGenerator { private$ObServers=[]; //增加观察者 publicfunctionadd(ObServer$ObServer) { $this->ObServers[]=$ObServer; } //事件通知 publicfunctionnotify() { foreach($this->ObServersas$ObServer){ $ObServer->update(); } } } /** *观察者接口类 *InterfaceObServer */ interfaceObServer { publicfunctionupdate($event_info=null); } /** *观察者1 */ classObServer1implementsObServer { publicfunctionupdate($event_info=null) { echo"观察者1收到执行通知执行完毕!\n"; } } /** *观察者1 */ classObServer2implementsObServer { publicfunctionupdate($event_info=null) { echo"观察者2收到执行通知执行完毕!\n"; } } /** *事件 *ClassEvent */ classEventextendsEventGenerator { /** *触发事件 */ publicfunctiontrigger() { //通知观察者 $this->notify(); } } //创建一个事件 $event=newEvent(); //为事件增加旁观者 $event->add(newObServer1()); $event->add(newObServer2()); //执行事件通知旁观者 $event->trigger();以上就是深入分析PHP设计模式的详细内容,更多关于PHP设计模式的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。