PHP最简单的设计模式是?

设计模式经常在composer包中很常见,今天来学习一下PHP设计模式-单例模式

  • 1、单例模式
<?php

class sigle
{
    private static $ins;

    //防止被串改继承 该方法的的属性public
    final protected function __construct()
    {
    }

    public static function getIns()
    {
        if (self::$ins === NULL)
        {
            self::$ins = new  self();
        }
        return self::$ins;
    }
    //防止被克隆
    final protected function __clone()
    {
        // TODO: Implement __clone() method.
    }
}

$obj = sigle::getIns();
$obj1 = sigle::getIns();
if ($obj === $obj1)
{
    echo '===';
}
else
{
    echo '!==';
}

以上就是一个完整的单例模式。

以下2点容易忽略的

1、function __construct 容易被子类继承,而变成public属性的方法 或者直接设置成 private 属性
2、function __clone 容易被克隆,导致单例失效或者直接设置成 private 属性

基础知识普及:

Final 关键字 ¶

PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

访问控制(可见性) ¶

对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RenBingo

一点一滴源于你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值