/*** @author xiaojiang* 方式1*/
class father{static $models = [];static public function getInstance(){$name =  get_called_class();if( !isset( self::$models[$name] ) ){self::$models[$name] = new $name();}return self::$models[$name];}public function m1(){echo "fm1";}public function m2(){echo "fm2";}
}
class child extends father{public function m1(){echo 'cm1';}
}
father::getInstance()->m1();
child::getInstance()->m1();/*** 方式2*/class base{static protected  $ins = [];static public function getInstance(){$cName = get_called_class();if( !isset(static::$ins[$cName]) ){static::$ins[$cName] = new $cName;}return static::$ins[$cName];}public function m1(){return "base m1";}public function m2(){return "base m2";}}class cbase extends base{//static public $ins = null;static public function getInstance(){return parent::getInstance();}public function m1(){return "cbase m1<br>";}}echo base::getInstance()->m1()."<br>";echo cbase::getInstance()->m1(); 

转载于:https://www.cnblogs.com/glory-jzx/p/6136834.html

PHP 单例模式继承的实现方式相关推荐

  1. 【Java多线程】实现Runnable接口方式 / 继承Thread类方式;使用synchronized锁实现线程安全;线程安全的懒汉式单例模式;死锁问题示例

    Thread 的生命周期 一.实现Runnable接口方式 1.在 run 方法中使用 synchronized 块 /*** 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的 ...

  2. python实现单例模式的三种方式及相关知识解释

    python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...

  3. 单例模式的各种实现方式(Java)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  4. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  5. java类注解是否可以通过实现接口或继承父类的方式获得

    接口类 @Service public interface UserService {public void get(); } 实现类 public class UserServiceImpl imp ...

  6. Python实现单例模式的几种方式

    认识单例模式 含义 单例模式是一种常用的软件设计模式,在应用这个模式时,类只会生成一个实例对象. 换句话说,单例模式确保某个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例,当我们在程序中的 ...

  7. Kotlin 静态内部类单例模式的正确实现方式

    本篇是对现网上流传的 Kotlin 实现静态内部类单例模式的纠正,为了把原理说清楚,文章前奏可能会有些长,熟悉静态内部类单例模式原理的朋友,可以直接跳转到文章最后,直接看结果即可. 最近在整理基础库的 ...

  8. JavaScript继承的多种方式和优缺点

    1.原型链继承 function Parent () {this.name = '张三'; }Parent.prototype.getName = function () {console.log(t ...

  9. python 空对象模式_Python 单例模式(3种方式)

    # 单例模式: # 实现目的:实例化多次,得到的实例是同一个,就是同一个对象,同一个名称空间(更加节省空间) ####################################方式一:在类内部定 ...

最新文章

  1. SQLServer之删除约束
  2. linux兼容性,Atom 1.23发布:功能增强,兼容性更好
  3. MVC系列框架之Struts存在的意义是什么?
  4. ClassNotFoundException和NoClassDefFoundError的区别
  5. python计算直角三角形顶点坐标
  6. 【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
  7. Linux编程网络通信
  8. RabbitMQ C Client编译
  9. 机器学习知识点(七)决策树学习算法Java实现
  10. python 排名函数_一个危险的Python函数,不推荐使用
  11. uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置
  12. idea下git log乱码问题
  13. ASP.NET MVC从视图传递多个模型到Controller
  14. 性能测试用例(转载)
  15. 国内的Android SDK镜像
  16. Android系统信息获取 之八:WIFI设备和WIFI信号信息获取
  17. linux快速安装mysql教程
  18. DotNetBar 14中文版
  19. HTML入门笔记8-上脚注和下脚注标签
  20. django按日期查询数据

热门文章

  1. 网络推广是做什么的知道网站做301定向跳转对优化有什么帮助?
  2. 网站关键词优化如何控制其密度?
  3. docker 查看已安装容器_docker中的容器安装PHP扩展件
  4. HTML在计算机中指什么,计算机正在执行的指令存放在什么中
  5. java git subtree_Git subtree使用
  6. (转载)vim括号匹配等跳转技巧
  7. fixing macOS Sierra fatal error: 'openssl/opensslv.h' or 'openssl/aes.h' file not found
  8. python 特征选择 绘图 + mine
  9. 深度学习实战篇-基于RNN的中文分词探索
  10. IOT数据库选型——NOSQL,MemSQL,cassandra,Riak或者OpenTSDB,InfluxDB