dart设计模式之单例模式

2021-08-06 11:15:02 浏览数 (1)

单例模式

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

模式分析

  1. 单例类只能有一个实例。
  2. 单例类必须自己创建自己的唯一实例。
  3. 单例类必须给所有其他对象提供这一实例。

模式解决问题

  1. 控制实例数目,节省系统资源。
  2. 保证该类只有一个实例,多处共享

优点

  1. 内存中只有一个实例,减少了内存开销,尤其是频繁创建和销毁实例
  2. 避免对资源的多重占用
  3. 保证全局唯一实例从而保证实例状态一致

缺点

  1. 没有接口,不能继承
  2. 大量使用也会导致内存泄漏

模式应用场景

  1. 要求生产唯一序列号。
  2. WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
  3. 创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

模式代码

代码语言:javascript复制
class _SingleTon {
  _SingleTon._();
  //第一种方式调用
  factory _SingleTon() {
    return instance;
  }
  //第二种方式调用
  static _SingleTon instance = _SingleTon._();
  int count = 0;
}
​
class RunSingleTon implements Run {
  @override
  main() {
    print('单例模式创建');
    print(_SingleTon().count  );
    print(_SingleTon.instance.count  );
    print(_SingleTon.instance.count  );
  }
}

0 人点赞