dart設計模式原型模式

      網友投稿 820 2022-05-29

      原型模式

      模式分析

      原型模式(Prototype Pattern)是用于創建重復的對象,同時又能保證性能。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。

      這種模式是實現了一個原型接口,該接口用于創建當前對象的克隆。當直接創建對象的代價比較大時,則采用這種模式。例如,一個對象需要在一個高代價的數據庫操作之后被創建。我們可以緩存該對象,在下一個請求時返回它的克隆,在需要的時候更新數據庫,以此來減少數據庫調用。

      模式解決問題

      當一個系統應該獨立于它的產品創建,構成和表示時。

      當要實例化的類是在運行時刻指定時,例如,通過動態裝載。

      為了避免創建一個與產品類層次平行的工廠類層次時。

      當一個類的實例只能有幾個不同狀態組合中的一種時。建立相應數目的原型并克隆它們可能比每次用合適的狀態手工實例化該類更方便一些。

      模式難點

      克隆

      優點

      性能提高。

      逃避構造函數的約束。

      缺點

      配備克隆方法需要對類的功能進行通盤考慮,這對于全新的類不是很難,但對于已有的類不一定很容易,特別當一個類引用不支持串行化的間接對象,或者引用含有循環結構的時候。

      必須實現 Cloneable 接口。

      模式應用場景

      資源優化場景。

      類初始化需要消化非常多的資源,這個資源包括數據、硬件資源等。

      性能和安全要求的場景。

      通過 new 產生一個對象需要非常繁瑣的數據準備或訪問權限,則可以使用原型模式。

      一個對象多個修改者的場景。

      一個對象需要提供給其他對象訪問,而且各個調用者可能都需要修改其值時,可以考慮使用原型模式拷貝多個對象供調用者使用。

      在實際項目中,原型模式很少單獨出現,一般是和工廠方法模式一起出現,通過 clone 的方法創建一個對象,然后由工廠方法提供給調用者。原型模式已經與 Java 融為渾然一體,大家可以隨手拿來使用。

      模式代碼

      abstract class ProtoType{ String _id; ProtoType(this._id); String get id=>_id; void set id(String id)=>this._id=id; ProtoType clone(); } class ConcretePrototype extends ProtoType{ ConcretePrototype(String id,this.name) : super(id); final String name; @override ConcretePrototype clone() { ProtoType protoType = new ConcretePrototype(this.id,this.name); return protoType; } } class RunPrototype implements Run { @override main(){ var a= ConcretePrototype("1","protoType模式"); var b= a.clone(); print("實例a的hashCode:"+a.hashCode.toString()); print("實例b的hashCode:"+b.hashCode.toString()); print("實例a的name:"+a.name); print("實例b的name:"+b.name); } @override String name="原型模式"; }

      dart設計模式之原型模式

      數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:年度活躍用戶數超過京東后,拼多多在市值上再次追平京東
      下一篇:iOS 偏好設置 NSUserDefault
      相關文章
      亚洲国产精品SSS在线观看AV| 国产精品亚洲w码日韩中文| 亚洲AV无码资源在线观看| 亚洲综合网美国十次| 久久久久亚洲av无码专区喷水 | 亚洲成AV人片高潮喷水| 亚洲AV成人噜噜无码网站| 亚洲国产高清在线精品一区| 亚洲精品福利在线观看| 亚洲自偷自偷精品| 久久综合亚洲鲁鲁五月天| 亚洲视频在线观看免费| 久久久久亚洲av无码专区| 91亚洲国产成人精品下载| 亚洲最新永久在线观看| 在线免费观看亚洲| 亚洲国产精品日韩在线| 亚洲jjzzjjzz在线播放| 亚洲熟妇AV一区二区三区宅男| 亚洲日韩AV一区二区三区四区| 亚洲男人的天堂网站| 亚洲国产成人AV在线播放| 亚洲av无码专区在线电影| 另类专区另类专区亚洲| 亚洲国产精品狼友中文久久久| 亚洲欧洲日产国码一级毛片 | 亚洲AV日韩精品一区二区三区| 久久亚洲中文字幕无码| 亚洲国产高清精品线久久| 精品国产亚洲一区二区在线观看| 亚洲婷婷五月综合狠狠爱| 亚洲A∨无码一区二区三区| 在线观看亚洲人成网站| 亚洲国产成人精品激情| 亚洲αⅴ无码乱码在线观看性色 | 亚洲精品美女久久久久99小说| 中文字幕亚洲图片| 亚洲成a人片77777老司机| 亚洲福利一区二区| 亚洲中文字幕久久久一区| 一本色道久久88综合亚洲精品高清|