美文网首页
PHP设计模式之多例模式(Multiton)代码实例大全(四)

PHP设计模式之多例模式(Multiton)代码实例大全(四)

作者: 八重樱勿忘 | 来源:发表于2020-09-02 13:58 被阅读0次

    目的

    多例模式是指存在一个类有多个相同实例,而且该实例都是该类本身。这个类叫做多例类。 多例模式的特点是:

    1. 多例类可以有多个实例。

    2. 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

    多例模式实际上就是单例模式的推广。

    举例

    • 2 个数据库连接器,比如一个是 MySQL ,另一个是 SQLite

    • 多个记录器(一个用于记录调试消息,一个用于记录错误)

    UML 图

    官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货

    代码

    • Multiton.php
    <?php
    
    namespace DesignPatterns\Creational\Multiton;
    
    final class Multiton
    {
        const INSTANCE_1 = '1';
        const INSTANCE_2 = '2';
    
        /**
         * @var 实例数组
         */
        private static $instances = [];
    
        /**
         * 这里私有方法阻止用户随意的创建该对象实例
         */
        private function __construct()
        {
        }
    
        public static function getInstance(string $instanceName): Multiton
        {
            if (!isset(self::$instances[$instanceName])) {
                self::$instances[$instanceName] = new self();
            }
    
            return self::$instances[$instanceName];
        }
    
        /**
         * 该私有对象阻止实例被克隆
         */
        private function __clone()
        {
        }
    
        /**
         * 该私有方法阻止实例被序列化
         */
        private function __wakeup()
        {
        }
    }
    

    PHP 互联网架构师成长之路*「设计模式」终极指南

    PHP 互联网架构师 50K 成长指南+行业问题解决总纲(持续更新)

    面试10家公司,收获9个offer,2020年PHP 面试问题

    ★如果喜欢我的文章,想与更多资深开发者一起交流学习的话,获取更多大厂面试相关技术咨询和指导,欢迎加入我们的群-点击此处(群号码856460874)。

    内容不错的话希望大家支持鼓励下点个赞/喜欢,欢迎一起来交流;另外如果有什么问题 建议 想看的内容可以在评论提出

    相关文章

      网友评论

          本文标题:PHP设计模式之多例模式(Multiton)代码实例大全(四)

          本文链接:https://www.haomeiwen.com/subject/kuqssktx.html