創建一個單例的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;
}