首先分享一个地址 https://segmentfault.com/a/1190000013696265(这个是主要的分享,人家作者写的非常棒?)

单例模式:对于这个大家当然感觉很简单,so easy,但我们需要知道其原理

当需要保证对象只有一个实例的时候,单例模式是非常有用的。他把创建对象的控制权交给一个单一的点上,任何时候应用程序都只会存在且仅存在一个实例。单例类不应该能在类的外部进行实例化。
一个单例类应该具备以下几个因素:

  • 必须拥有一个访问级别为private的构造函数,用于阻止类被随意实例化
  • 必须拥有一个保存类的实例的静态变量
  • 必须拥有一个访问这个实例的公共静态方法,该方法通常被命名为getInstance()
  • 必须拥有一个私有的空的clone方法,防止实例被克隆复制

class single{

public static $_instance;

   private function __contruct(){
    }

public static function getInstance(){

if(!self::$_instance){

       self::$_instance = new self();

}

return self::$_instance;

}

  private function __clone(){}

}

工厂模式

工厂模式解决的是如何不通过new建立实例对象的方法

工厂模式是一种类,它具有为你创建对象的某些方法,你可以使用工厂类创建对象而不使用new。这样,如果你想要更改所创建的对象类型只需要更改工厂即可,使用该工厂的所有代码会自动更改。

工厂模式往往配合接口一起使用,这样应用程序就不必要知道这些被实例化的类的具体细节,只要知道工厂返回的是支持某个接口的类就可以方便的使用了。


interface Person { public function showInfo(); } class Student implements Person { public function showInfo() { echo "这是一个学生 \n"; } }  class Teacher implements Person { public function showInfo() { echo "这是一个老师 \n"; } }  class PersonFactory { public static function factory($person_type) { // 将传入的类型首字母大写 $class_name = ucfirst($person_type); if(class_exists($class_name)){ return new $class_name; }else{ throw new Exception("类:$class_name 不存在",1); } } } // 需要一个学生 $student = PersonFactory::factory('student'); echo $student->showInfo(); // 需要一个老师的时候 $teacher = PersonFactory::factory('teacher'); echo $teacher->showInfo();

 

转载于:https://www.cnblogs.com/gaosf/p/9910155.html

php精华之独孤九剑相关推荐

  1. 《独孤九剑学习法》最新修订版

    何谓"独孤九剑" 在80386的电脑上有一个叫"笑傲江湖"的游戏,国产的:剑宗的风清扬使出9招剑式,威力无比,号称"独孤九剑",令狐冲练了 ...

  2. 网络学习之'独孤九剑'

    在80386的电脑上有一个叫"笑傲江湖"的游戏,国产的:剑宗的风清扬使出9招剑式,威力无比,号称"独孤九剑",令狐冲练了之后,武功迅速大增:气宗的岳不群练了数3 ...

  3. 【转】Vue.js 2.0 快速上手精华梳理

    Vue.js 2.0 快速上手精华梳理 Sandy 发掘代码技巧:公众号:daimajiqiao 自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新 ...

  4. java显示链表在jtable上输出_jtable的使用精华

    jtable的使用精华 众所皆知,java中没有像c#中的DATAGRID似的数据显示控件,所以不能直接显示数据,只有通过自己定制表格才能显示数据,请个位来讨论一下java中用来显示数据jtable的 ...

  5. Linux运维跳槽必备的40道面试精华题

    过一次年,结婚.存款.父母养老,一系列向钱看的事都在碾压我们本来还挺简单的神经,但难过没有出路,唯有找到好的方法和事业方向,才能实现一步一个脚印的逆袭. 下面是一名资深Linux运维求职数十家公司总结 ...

  6. maya批量命名插件_教你玩转MAYA的四十二精华造诣(第一期)

    最近在整理文档时发现我收藏了一篇关于MAYA应用技巧的文章,突然有兴趣看了看,结果发现老版本MAYA中的某些内容很多已经无法应用于新版本.我又上网查了一下,结果发现网上好多帖子和我收藏的这篇内容基本一 ...

  7. 【云栖大会精华汇】历届云栖大会精彩资料大放送,一篇看尽云栖大会前世今生...

    [热点头条] 历届云栖大会精彩资料大放送,一篇看尽云栖大会前世今生        如果从2009-2010年算起,2017杭州云栖大会已经是第八届.为帮助更多朋友认识云栖大会,云栖社区特别整理了历届云 ...

  8. 2月15日Python线上峰会免费学!6场精华分享,用代码“抗”疫

    截至截止2月12号09时43分,新型冠状病毒在全国已确诊44726例,疑似病例已达21675例.而专家所说的"拐点"始终未至,受疫的影响,各大公司开启远程办公模式,将返回工作场所办 ...

  9. java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    " 本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指 ...

  10. 生物什么时候学公式计算机,高考生物重要规律性关系及公式精华归纳,转走吧!...

    原标题:高考生物重要规律性关系及公式精华归纳,转走吧! 生物是理科中的文科,虽然大部分知识是让记忆的,但是还是有计算的,而且涉及计算的还是大分值的,为了这个大分值,还是拼了吧!本文总结高中生物中的所有 ...

最新文章

  1. 【摄像头】低照度和光圈
  2. freemarker.template.TemplateException: Expected string. column.nullable evaluated instead to freemar
  3. 【通知】《深度学习之模型设计》第三次重印,欢迎读者支持!
  4. android模拟器 后退键,MainActivity返回键模拟home效果,容易出现的问题
  5. dfs时间复杂度_吊打DFS和BFS,什么情况下可以用二分?
  6. “中国黄酒文化之乡”举办黄酒蒸笼文化旅游节
  7. 新闻发布系统java ee_Java EE 7发布–反馈和新闻报道
  8. 05 MapReduce应用案例02
  9. pythonjam可以画图吗_GitHub - jamfs/pyecharts: Python Echarts Plotting Library
  10. Hibernate 添加数据 二 (多对多)
  11. cmd完成拷贝文件,并生成两个快捷脚本
  12. 127 MySQL权限管理
  13. layer.prompt输入框改成laydate时间控件
  14. html修改鼠标手势,css要怎么设置鼠标手势?
  15. Thread 类创建线程的五种基本写法
  16. 旧文重发:从第三方服务角度看各公司技术部门如何正确计算投入产出比~
  17. 编程数学读书笔记 -- 第二章逻辑
  18. 关于大数据技术原理与应用的学习(6)
  19. 企业上市需要哪些条件
  20. 手机数据恢复的经历和过程

热门文章

  1. KY-RTI分布仿真技术:第四章 C++程序设计
  2. Windows下使用Grub4dos无损(无需格式化)制作Windows/Linux双引导U盘并引导ISO镜像
  3. 【数据分析实战】杭州2019年链家在售房源数据分析
  4. 计算机专业公务员三不限,公务员:三不限岗位是大坑,这3类专业最受欢迎,选对才是硬道理...
  5. linux 设置 用户 密码,Linux系统怎么设置开机密码?Linux设置开机密码的方法
  6. NAND Flash(spi nand flash和nand flash)和emmc以及ufs通过uboot烧写固件的一些差异
  7. marked + mathjax 实现支持数学公式的 markdown 转 html
  8. 龙之谷怎么进去服务器维护,龙之谷端游服务器爆满怎么进
  9. html中的项目符号和编号,CSS重新定义项目符号和编号
  10. script什么意思中文翻译成,script中文是什么意思