PHP设计模式理解.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP设计模式理解

PHP设计模式1:单例设计模式一个对象只负责一个特定的任务。使用单例设计模式的原因,主要是用于数据库操作,一个web系统中存在大量的数据库操作,需要大量的new操作,每一次new操作都会消耗资源,通过单例设计模式可以减少new操作1,构造方法必须标记为private(访问控制:防止外部new访问操作符创建对象),单例类不能在其他类中实例化,只能被自身实例化。2,拥有一个保存类的实例的静态成员变量。3,拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类,通过instanceof(可以检查一个对象是否是某类的实例,或者是某类的子类)操作可以检测是否已经被实例化)。4,需要创建__clone()方法防止对象被复制克隆。例子:class man{ //保存例实例在此属性中 private static $_instance; //构造函数声明为private,防止直接创建对象 private function __construct() { echo 我被实例化了!; } //单例方法 public static function get_instance() { var_dump(isset(self::$_instance)); if(!isset(self::$_instance)) { self::$_instance=new self();//自我实例化 } return self::$_instance; } //阻止用户复制对象实例 private function __clone() { trigger_error(Clone is not allow ,E_USER_ERROR); } function test() { echo(test); }}// 这个写法会出错,因为构造方法被声明为private//$test = new man;// 下面将得到Example类的单例对象,采用static直接类名访问实例化$test = man::get_instance();$test-test();// 复制对象将导致一个E_USER_ERROR.//$test_clone = clone $test;2:工厂模式工厂模式?是一种类,它具有为你创建对象的某些方法。您可以使用工厂类创建对象,而不需要直接使用?new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可应用场景:众多子类并且会扩充、创建方法比较复杂。例子:interface IUser{ function getName();}class User implements IUser{ public function __construct( $id ) { } public function getName() { return Jack; }}//工厂类,用于new所需要的对象class UserFactory{ public static function Create( $id ) { return new User( $id ); }}$uo = UserFactory::Create( 1 );echo( $uo-getName().\n );3:观察者模式一个对象通过添加一个方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息执行的操作与可观察的对象无关。结果是对象可以相互对话,而不必了解原因。//首先定义观察者接口interface IObserver {//发生变化的时候观察者的动作function onChange($sender,$args) ;}//定义被观察者接口interface IObservable {//注册观察者的方法function addObserver($observer);}//定义用户列表类,继承被观察者类class UserList implements IObservable {//注册的观察者列表private $_observers = array();//添加用户的方法public function addCustomer($name) {foreach($this-_observers as $obs) {$obs-onChange($this,$name);}}//注册观察者的方法public function ad

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档