php设计模式中工厂模式和单例模式的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php设计模式中工厂模式和单例模式的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2053字,纯文字阅读大概需要3分钟。
内容图文
//让该类在外界无法造对象 //让外界可以造一个对象,做一个静态方法返回对象 //在类里面通过让静态变量控制返回对象只能是一个。
单例模式的要点有三个:
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。
为什么要使用PHP单例模式
1. php的应用主要在于数据库应用, 一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时, 如果使用单例模式, 则可以避免大量的new 操作消耗的资源,还可以减少数据库连接这样就不容易出现 too many connections情况。
2. 如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现. 这个可以参看zend Framework的FrontController部分。
3. 在一次页面请求中, 便于进行调试, 因为所有的代码(例如数据库操作类db)都集中在一个类中, 我们可以在类中设置钩子, 输出日志,从而避免到处var_dump, echo。
class cat { public $name; private function __construct() { } static $temp; static function new_ob() { if(empty(self::$temp)){ self::$temp = new cat(); } return self::$temp; } function speak(){ return "喵喵喵"; } } //$mao = new cat(); //如果没有猫就造一个,然后等于新的xxx,如果有,直接等于。达到限制的目的。 //$mao; //if (empty($mao)){ // $mao = new cat(); //} // $xxx = $mao; $mao = cat::new_ob(); $mao2 = cat::new_ob(); //给1猫改名字,2猫的名字输出为1猫改的名字。此为单例。 $mao->name = "py";
2.简单工厂模式
①抽象基类:类中定义抽象一些方法,用以在子类中实现
②继承自抽象基类的子类:实现基类中的抽象方法
③工厂类:用以实例化所有相对应的子类
abstract class jsq { public $a; public $b; function yunsuan(){ } } //此为拓展 class jiafa extends jsq { function yunsuan() { //parent::yunsuan(); // TODO: Change the autogenerated stub return $this ->a+$this->b; } } class jianfa extends jsq { function yuansuan(){ return $this->a-$this->b; } } class factory { static function create($x){ switch ($x){ case "+": return new jiafa(); break; case "-": return new jianfa(); break; } } } //$j1 = new jiafa(); //$j1->a = 1; //$j1->b = 2; //$j1->yunsuan(); //尽量避免实例化对象,采用静态方法获取。 $jf = factory::create("+"); $jf->a = 1; $jf->b = 2; echo $jf->yunsuan();
以上就是php设计模式中工厂模式和单例模式的区别的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的php设计模式中工厂模式和单例模式的区别全部内容,希望文章能够帮你解决php设计模式中工厂模式和单例模式的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。