美文网首页PHP很简单PHP经验分享程序员技术栈
设计模式[创建型]05--多例模式(Multiton)

设计模式[创建型]05--多例模式(Multiton)

作者: 四月不见 | 来源:发表于2019-06-05 16:20 被阅读0次

一、简介

多例模式被公认为是 反面模式,为了获得更好的可测试性和可维护性,请使用『依赖注入模式』。

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

  • 多例类可以有多个实例。
  • 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

二、场景

  • 2 个数据库连接器,比如一个是 MySQL ,另一个是 SQLite
  • 多个记录器(一个用于记录调试消息,一个用于记录错误)

三、类结构

多例模式结构如下:

角色 简述
Multiton 一般是一个多例类或是接口

四、UML图

五、代码分析

final class Multiton
{
    const INSTANCE_1 = '1';
    const INSTANCE_2 = '2';
    /**
     * @var Multiton[]
     * 实例数组
     */
    private static $instances = [];
    /**
     * this is private to prevent from creating arbitrary instances
     * 构造方法声明为私有方法,禁止外部程序使用new实例化
     */
    private function __construct() {
    }

    // 这是获取当前类对象的唯一方式
    public static function getInstance(string $instanceName): Multiton
    {
        if (!isset(self::$instances[$instanceName])) {
            self::$instances[$instanceName] = new self();
        }
        return self::$instances[$instanceName];
    }

    /**
     * prevent instance from being cloned
     *  声明成私有方法,禁止克隆对象
     */
    private function __clone() {
    }

    /**
     * prevent instance from being unserialized
     * 声明成私有方法,禁止重建对象
     */
    private function __wakeup() {
    }
}

相关文章

  • 设计模式[创建型]05--多例模式(Multiton)

    一、简介 多例模式被公认为是 反面模式,为了获得更好的可测试性和可维护性,请使用『依赖注入模式』。 多例模式实际上...

  • 多例模式(Multiton)

    多例模式被公认为是反面模式,为了获得更好的可测试性和可维护性,请使用『依赖注入模式』。 1.4.1. 目的 多例模...

  • 23种设计模式总结一

    23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 一、创建型设计模式 创建型设计模式包括:单...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 创建型设计模式总结

    创建型设计模式总结 Intro 前面几篇文章已经把创建型设计模式都介绍了,来做一个简单的总结。 创建型设计模式,就...

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • 设计模式归纳

    一、设计模式的分类 23 种经典的设计模式分为三类:创建型、结构型、行为型。 1.创建型设计模式主要解决“对象的创...

  • 《设计模式之美》- 23种设计模式

    学习《设计模式之美》笔记。 23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型 创建型模式 创建...

  • 设计模式4 - 多例模式【Multition Pattern】

    多例模式 定义:作为对象的创建模式,多例模式中的多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向...

网友评论

    本文标题:设计模式[创建型]05--多例模式(Multiton)

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