PHP常用设计模式

PHP常用设计模式

ID:43033592

大小:71.50 KB

页数:7页

时间:2019-09-24

PHP常用设计模式_第1页
PHP常用设计模式_第2页
PHP常用设计模式_第3页
PHP常用设计模式_第4页
PHP常用设计模式_第5页
资源描述:

《PHP常用设计模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、单例模式单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出來的对象是唯一的。所有的单例模式至少拥有以下三种公共元素:1.它们必须拥有一个构造函数,并且必须被标记为private2.它们拥有一个保存类的实例的静态成员变量3.它们拥有一个访问这个实例的公共的静态方法单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。例子:classSingle{private$name;//声明一个私有的实例变量privatefunction_construct($u

2、sername){//声明私有构造方法$this->name=$username;}publicfunctiontest(){return$this->name;}}$s=newSingle('world');echoSingle::test();工厂模式工厂模式就是一种类,具有为您创建对象的某些方法,这样就可以使用工厂类创建对象,而不直接使用newo这样如果想更改创建的对象类型,只需更改该工厂即可。例子:classFactory{//创建一个基本的工厂类staticpublicfunctionfac($id){〃创建一个返回对象实例的静态方

3、法if($id==2)returnnewA();elsereturnnewB();}}interfaceFetchName{//创建一,个接丨Ipublicfunctiongetname();〃}classAimplementsFetchName{publicfunctiongetname(){return'AAA';}}classBimplementsFetchName{publicfunctiongetname(){returnZBBB';}}$o=Factory::fac⑵;〃调用工厂类中的方法echo$o->getname();注册模

4、式注册树模式当然也叫注册模式,注册器模式。注册树模式通过将対象实例注册到一棵全局的对象树上,盅要的时候从刈像树上采摘的模式设计方法。类似小时候买糖葫芦,卖糖葫芦的将糖葫芦插在一个大的杆子上,人们买的时候就取下来。不同的是,注册树模式摘下来还会有,能摘很多次,糖葫芦摘一次就没了。例子:〃创建单例classSingle{public$hash;staticprotected$ins=null;finalprotectedfunction_construct(){$this->hash=rand(l,9999);}staticpublicfunct

5、iongetlnstance(){if(self::$insinstanceofself){returnself::$ins;}self::$ins二newself();returnself::$ins;}}〃工厂模式classRandFactory{publicstaticfunctionfactory(){returnSingle::getlnstance();}}〃注册树classRegister!protectedstatic$objects;publicstaticfunctionset($alias,$object){self::

6、$objects[$alias]=$object;}publicstaticfunctionget($alias){returnself::$objects[$alias];}publicstaticfunction_unset($alias){unset(self::$objects[$alias]);}}Register::set('randr,RandFactory::factory());$object=Register::get('rand');print_r($object);适配器模式将各种截然不同的函数接口封装成统一的API。

7、例如PHP中的数据库操作有MySQL,MySQLi,PD0三种,可以用适配器模式统一成一致,使不同的数据库操作统一成一致的APR类似的场景还有cache适配器,可以将memcache,redis,file,apc等不同的缓存函数统一成一致的APL首先定义一个接口(有几个方法,以及相应的参数)。然后,有几种不同的情况,就写几个类实现该接口。将完成相似功能的函数,统一成一致的方法。例子:〃接口interfaceDatabase{functionconnect($host,$user,$passwd,$dbname);functionquery($

8、sql);functionclose();}//MySQL数据源classMySQLimplementsIDatabase{protected$conn;funct

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。