php单态模式也么实现,PHP 单态设计模式讲解以及使用

本文详细介绍了PHP中的单态模式,包括其作用、设计要点和代码实现。单态模式确保一个类只有一个实例,并提供全局访问点。文章通过trait展示了如何创建和使用单态模式,并解释了`new static()`和`newself()`的区别。最后,提供了测试用例以验证单态模式的生效情况。
摘要由CSDN通过智能技术生成

一:单态模式的作用/目的

面向对象编程开发中,一个类只能有一个实例对象存在

二:单态模式的注意点

1. 需要一个保存类的唯一实例的静态成员变量;( private static $instance)

2. 构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义;

3. 必须提供一个访问这个实例的公共的静态方法,从而返回唯一实例的一个引用 。(通常方法名:getInstance)

三:代码实现

trait Instance

{

private static $instance;

private function

static function getInstance()

{

if(!isset(self::$instance)){

self::$instance = new static();

//self::$instance = new self();

}

return self::$instance;

}

}

代码剖析:

trait:

自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。

Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个 Class 之间不需要继承。

new static() new self() 的区别

self: self写在哪个类里面就代表该类

执行此代码: Instance::getInstance();

new self() == new Instance()

new static() == new Instance()

static: static在哪个类里面调用就代表哪个类, 例如:

class Test

{

use Instance;

}

执行此代码 Test::getInstance();

new static() == new Test()

new self() == new Instance()

四:测试生效未生效

请看下篇文章:link.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值