singleton pattern 单例模式 php

定义:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,提供全局访问的方法。

要点:1、某个类只能有一个实例。2、必须自行创建这个实例。3、必须向整个系统提供这个实例。

角色:

singleton单例角色类

在单例类的内部只生成一个实例,同时提供一个静态的getinstance工厂方法,让客户可以使用它的唯一实例

单例模式的实现过程中,需要注意:

  • 单例类的构造函数为私有。
  • 提供一个自身的静态私有成员变量。
  • 提供一个公有的静态工厂方法。
  • 克隆方法私有化。

类图:

代码:

singleton

class Singleton
{
    // 创建静态私有的变量保持该类对象
    private static $instance;
    // 私有化克隆类,防止克隆
    private function __clone(){}
    // 防止使用new直接创建对象
    // private function __construct(){}
    static public function getinstance(){
        if(self::$instance instanceof self){
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
    public function test(){
        echo "单例模式";
    }
}

 Client

require_once 'Singleton.php';
$pattern = Singleton::getinstance();
$pattern2 = Singleton::getinstance();
if($pattern1 == $pattern2){
    echo "相等";
}else{
    echo "不相等";
}

实例:

某软件公司承接了一个服务器负载均衡(Load Balance)软件的开发工作,该软件运行在一台负载均衡服务器上,可以将并发访问和数据流量分发到服务器集群中的多台设备上进行并发处理,提高了系统的整体处理能力,缩短了响应时间。由于集群中的服务器需要动态删减,且客户端请求需要统一分发,因此需要确保负载均衡器的唯一性,只能有一个负载均衡器来负责服务器的管理和请求的分发,否则将会带来服务器状态的不一致以及请求分配冲突等问题。如何确保负载均衡器的唯一性是该软件成功的关键,请使用单例模式设计服务器负载均衡器。

太复杂了,我写不来 

参考:https://www.cnblogs.com/shamohai/p/11158206.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值