[Flutter] 單例模式


單例模式

介紹

確保一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。

實現

普通實現
class Singleton {
    ///靜態實例
  static Singleton? _instance;
  
  /// 私有的命名構造函數,在此處初始化
  Singleton._internal();
  
    ///定義getInstance方法獲取實例
  static Singleton getInstance() {
      ///如果定義的實例為空,將構造函數賦值給實例
    if (_instance == null) {
      _instance = Singleton._internal();
    }
    
      ///返回實例
    return _instance!;
  }
}

利用getter實現
class Singleton {

  static Singleton? _instance;

  Singleton._internal();

    ///用get直接獲取實例
  static get instance {
  
    if (_instance == null) {
      _instance = Singleton._internal();
    }

    return _instance;
  }
}


利用工廠構造函數factory實現
class Singleton {

  static Singleton? _instance;
    

  Singleton._internal();
  
    ///工廠構造函數
  factory Singleton() {

    if (_instance == null) {
      _instance = Singleton._internal();
    }

    return _instance!;
  }
}
利用判空符??和延遲初始化符號late
class Singleton {
  static Singleton? _instance;

  Singleton._internal() {
    _instance = this;
  }
	///判空符??
  factory Singleton() => _instance ?? Singleton._internal();
}
class Singleton {
  Singleton._internal();
  
  factory Singleton() => _instance;
  
  static late final Singleton _instance = Singleton._internal();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM