【開發經驗】在Flutter中使用dart的單例模式


創建一個單例的Manager類

class Manager { // 工廠模式 factory Manager() =>_getInstance() static Manager get instance => _getInstance(); static Manager _instance; Manager._internal() { // 初始化 } static Manager _getInstance() { if (_instance == null) { _instance = new Manager._internal(); } return _instance; } } 

調用

// 無論如何初始化,取到的都是同一個對象 Manager manager = new Manager(); Manager manager2 = Manager.instance;


作者:馬嘉倫
鏈接:https://www.jianshu.com/p/720b968f4e2c
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
 
 
 
 
 
 
 

class UserManager {

  // 如果一個函數的構造方法並不總是返回一個新的對象的時候,可以使用factory,

  // 比如從緩存中獲取一個實例並返回或者返回一個子類型的實例

 

  // 工廠方法構造函數

  factory UserManager() => _getInstance();

 

  // instance的getter方法,通過UserManager.instance獲取對象

  static UserManager get instance => _getInstance();

 

  // 靜態變量_instance,存儲唯一對象

  static UserManager _instance;

 

  // 私有的命名式構造方法,通過它可以實現一個類可以有多個構造函數,

  // 子類不能繼承internal不是關鍵字,可定義其他名字

  UserManager._internal() {

    // 初始化

    user = new User(false, "", "", "", "", false, "", false, "", "");

  }

  

  // 獲取對象

  static UserManager _getInstance() {

    if (_instance == null) {

      // 使用私有的構造方法來創建對象

      _instance = new UserManager._internal();

    }

    return _instance;

  }

  

  // 用戶對象

  User user;

}


免責聲明!

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



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