PHP设计模式(一)单例模式

在面向对象编程中,我们会用到很多设计模式,比如常见的单例模式,工厂模式,代理模式,观察者模式等等。每一个模式,都能解决特定问题,是很多前辈经过很多实践总结出来的。掌握并灵活运用它们,对于面向对象编程有很大的帮助。
php中常用的设计模式有:

  • 单例模式(多例模式)
  • 代理模式
  • 装饰者模式
  • 工厂模式
  • 观察者模式
  • 发布者/订阅者模式
    当然设计模式不止这些,后边想到再做补充。我们先从单例模式(多例模式)入手吧。
    单例模式(Singleton)和多例模式Multiton让我们可以控制类的实例的数量。单例模式的类,只能实例化一次,多例模式则可以多次实例化。
    单例模式被当做职责模式,用来在应用程序中创建一个单一的访问点。让我们先看一下代码实例。
class SinglePattern
{
    public static function getInstance()
    {
        static $instance = null;
        if ($instance == null) {
            $instance = new SinglePattern();
        }
        return $instance;
    }
}

class MultitonPattern
{
    public static function getInstance($key)
    {
        static $instances = [];
        if (!array_key_exists($key, $instances)) {
            $instances[$key] = new MultitonPattern();
        }
        return $instances[$key];
    }
}

由于在php中,对象总是以引用的方式进行传递,因而无论是多例对象,还是单例返回的实例,都可以保证他们在应用程序中一致性。使用这两个模式,必须注意序列化操作和clone关键字,因为他们可能为同一个对象产生不同的版本。
一个比较常见的使用场景,就是当我们跟数据库打交道的时候。在一个应用中,我们会有大量的数据库操作,因为链接数据库需要句柄,使用单例模式,很好的避免了大量的new操作,减少了对系统资源的消耗和内存的占用。至于多例模式,使用场景大家自己领会一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值