2022-03-06

單例模式

??一個類只允許創(chuàng)建一個實例熬甚,那這個類就是一個單例類,這種設計模式就叫作單例設計模式热凹,簡稱單例模式鹿霸。
??一般來說排吴,構(gòu)建一個單例類,由以下3部分構(gòu)成:
??1.一個引用自身類的靜態(tài)屬性實例;
??2.一個私有的類命名構(gòu)造函數(shù),確保不能從類外部實例化該類;
??3.用于返回實例的靜態(tài)方法.
??按返回實例的靜態(tài)方法的創(chuàng)建方式不同,flutter中創(chuàng)建單例模式,可以分為5種方法,如下圖所示:

image.png

??一.普通單例

class SingleTon {
  //引用自身類的靜態(tài)屬性實例
  static SingleTon? _instance;

  //私有的命名構(gòu)造函數(shù),確保不能從類外部實例化該類
  SingleTon._();

  //用于返回實例的靜態(tài)方法,外部僅可以通過該方法訪問實例
  static SingleTon getInstance() {
    _instance ??= SingleTon._();
    return _instance!;
  }
}

??調(diào)用方式:

  SingleTon singleTon = SingleTon.getInstance();

??二.Dart化之getter

class SingleTon {
  //引用自身類的靜態(tài)屬性實例
  static SingleTon? _instance;

  //私有的命名構(gòu)造函數(shù),確保不能從類外部實例化該類
  SingleTon._();

  //和方法1的區(qū)別是,這里使用了getter方法.外部調(diào)用時,instance后面不需要加括號.
  static SingleTon get instance(){
    _instance ??= SingleTon._();
    return _instance!;
  }
}

??調(diào)用方式:

SingleTon singleTon = SingleTon.instance;

??三.Dart化之工廠函數(shù)

class SingleTon {
  //引用自身類的靜態(tài)屬性實例
  static SingleTon? _instance;

  //私有的命名構(gòu)造函數(shù),確保不能從類外部實例化該類
  SingleTon._();

  //工廠函數(shù)
  factory SingleTon() {
    _instance ??= SingleTon._();
    return _instance!;
  }
}

??調(diào)用方式:

  SingleTon singleTon = SingleTon();

??四.Dart化之工廠函數(shù)+箭頭函數(shù)

class SingleTon {
  //引用自身類的靜態(tài)屬性實例
  static SingleTon? _instance;

  //私有的命名構(gòu)造函數(shù),確保不能從類外部實例化該類
  SingleTon._();

  //工廠函數(shù)+箭頭函數(shù)
  factory SingleTon() => _instance ?? SingleTon._();
}

??調(diào)用方式同三.
??另外提一下,在dart的空安全中,有個重要的操作符late.被late修飾的變量,會在首次訪問時才會初始化.所以還可以有另外一個單例寫法:

class SingleTon {
  //被late修飾后,變量在類加載時不會初始化,只有首次被訪問才會初始化
  static late final SingleTon _instance = SingleTon._();

  //私有的命名構(gòu)造函數(shù),確保不能從類外部實例化該類
  SingleTon._();

  factory SingleTon() => _instance;
}

??調(diào)用方式同三.

??五.Flutter化InheritedWidget

class _InheritedContainerState extends InheritedWidget {
  final dynamic data;

  const _InheritedContainerState({
    Key? key,
    required this.data,
    required Widget child,
  }) : super(key: key, child: child);

  @override
  bool updateShouldNotify(_InheritedContainerState oldWidget) => true;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市懦鼠,隨后出現(xiàn)的幾起案子钻哩,更是在濱河造成了極大的恐慌,老刑警劉巖葛闷,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憋槐,死亡現(xiàn)場離奇詭異,居然都是意外死亡淑趾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門忧陪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扣泊,“玉大人,你說我怎么就攤上這事嘶摊⊙有罚” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵叶堆,是天一觀的道長阱飘。 經(jīng)常有香客問我,道長虱颗,這世上最難降的妖魔是什么沥匈? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮忘渔,結(jié)果婚禮上高帖,老公的妹妹穿的比我還像新娘。我一直安慰自己畦粮,他們只是感情好散址,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宣赔,像睡著了一般预麸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上儒将,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天吏祸,我揣著相機與錄音,去河邊找鬼椅棺。 笑死犁罩,一個胖子當著我的面吹牛齐蔽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播床估,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼含滴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丐巫?” 一聲冷哼從身側(cè)響起谈况,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎递胧,沒想到半個月后碑韵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡缎脾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年祝闻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遗菠。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡联喘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辙纬,到底是詐尸還是另有隱情豁遭,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布贺拣,位于F島的核電站蓖谢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏譬涡。R本人自食惡果不足惜闪幽,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昂儒。 院中可真熱鬧沟使,春花似錦、人聲如沸渊跋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拾酝。三九已至也切,卻和暖如春挨下,著一層夾襖步出監(jiān)牢的瞬間阻塑,已是汗流浹背歉眷。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人底挫。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓恒傻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親建邓。 傳聞我的和親對象是個殘疾皇子盈厘,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 第一章 R語言介紹 面向?qū)ο竺嫦驅(qū)ο笫荝語言的一個突出特點。每個步驟都需要處理不同的對象官边,包括:向量沸手,矩陣,函數(shù)注簿,...
    無心糖閱讀 575評論 0 3
  • 中原焦點團隊 初15中16講13 付淑平 堅持分享549天 本周堅持約練2場 總約練249場 第一單元需要概述需要...
    79d182f5e0a9閱讀 129評論 0 0
  • 過了二月初二龍?zhí)ь^之后诡渴,雨水漸豐捐晶,即使現(xiàn)在還是沙塵預警,疫情多點爆發(fā)妄辩。大家怎么過活我就怎么過活租悄,大家怎么活著我也怎...
    舞蹈生圖鑒閱讀 251評論 0 2
  • 科拉·地下鐵道·逃離 科拉,一個千萬黑奴的代表恩袱,一個《地下鐵道》中的主人公。 ...
    姑依滑雪閱讀 557評論 1 9
  • 本周總結(jié) 開學一周了胶哲,日子過的挺充實畔塔,每天滿滿的安排╮(╯_╰)╭,爽鸯屿。 俄烏依舊開戰(zhàn)澈吨,戰(zhàn)爭離的太遠了,至今我還是...
    安嘉慶_2021強化班閱讀 143評論 0 1