美文网首页
Dart 中的单例模式

Dart 中的单例模式

作者: FJK | 来源:发表于2019-04-28 11:03 被阅读0次

单例类:

class Singleton {
  /// 单例对象
  static Singleton _instance;

  /// 内部构造方法,可避免外部暴露构造函数,进行实例化
  Singleton._internal();

  /// 工厂构造方法,这里使用命名构造函数方式进行声明
  factory Singleton.getInstance() => _getInstance();

  /// 获取单例内部方法
  static _getInstance() {
    // 只能有一个实例
    if (_instance == null) {
      _instance = Singleton._internal();
    }
    return _instance;
  }
}

调用:

Singleton singleton  = Singleton. getInstance();

TIPS :

  1. java 中的单例是需要将构造函数定义为私有,在dart中不提供默认构造函数,这一点和JAVA 不同, 所以不写默认构造函数,外部就无法调用。(当然也可以将默认构造器的返回值修改为 _getInstance())
    修改上面的代码:
  factory Singleton.getInstance() => _getInstance();

to :

factory Singleton() =>_getInstance()
static Singleton get instance => _getInstance();

调用:

// 无论如何初始化,取到的都是同一个对象
Singleton s1 = new Singleton();
Singleton s2 = Singleton.instance;

注: 两种都可以,但个人觉得为了安心,既然是单例,那就单单只有一种初始化写法的好

  1. factory

作用是相同对象访问缓存,不需要再去执行代码;

  1. 对于线程安全

任何Dart程序的并发都是运行多个isolate的结果。因为Dart没有共享内存的并发,没有竞争的可能性所以不需要锁,也就不用担心死锁的问题。
至于线程相关的问题,可以参考官方文档 :
https://webdev.dartlang.org/articles/performance/event-loop

相关文章

  • Flutter单例模式及Dio的封装

    单例模式 我们通常的开发中,单例模式经常会用到,在Dart中亦同样。代码: 运行验证: 可知该类只会被创建一次,也...

  • Dart 中的单例模式

    单例类: 调用: TIPS : java 中的单例是需要将构造函数定义为私有,在dart中不提供默认构造函数,这一...

  • Dart 单例模式

  • Dart单例模式

  • Dart单例模式

    什么是单例模式? 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一...

  • chrome中的单例模式

    chrome中的单例模式chrome中的单例模式

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 单例模式

    一、实现单例模式 或者 二、透明的单例模式 三、用代理实现单例模式 四、JavaScript中的单例模式 在Jav...

  • Java四种单例设计模式

    Java中的四种单例模式 单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。 1.基本单例模式...

网友评论

      本文标题:Dart 中的单例模式

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