日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式的理解:享元模式 (Flyweight)

發布時間:2024/10/14 asp.net 119 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式的理解:享元模式 (Flyweight) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

享元模式 (Flyweight),是為了解決 使用大量細粒度對象時,代價過高性能變低的問題。

例如在編輯一個word文檔時每個字符都可以改變字體大小,字體類型,字體顏色。相應的,我們會為每個字符創建一個對象。那么如果要編輯1萬個文字的文本,就需要創建1萬個對象,由于創建如此多的對象就會給系統帶來較大的負荷。實際上,在這些編輯的這1萬個字符中,有很大一部分的字體大小,字體類型,字體顏色都是一樣的,即狀態是一樣的。享元模式的做法就是只為這些相同的“狀態”創建一個對象,如果需要這種狀態就將自己的引用指向該對象。實現共享。享元模式大部分通過緩存技術實現。

?

例如? 根據網站類型名稱來創建和共享對象。示例來自?https://www.cnblogs.com/adamjwh/p/9070107.html? 。?

//抽象的網站類 public abstract class WebSite { public abstract void use(); } //具體的網站類 public class ConcreteWebSite extends WebSite {private String name = "";public ConcreteWebSite(String name) {this.name = name;}@Overridepublic void use() {System.out.println("網站分類:" + name);}} //網站工廠類,用于創建具體的網站對象 public class WebSiteFactory {private HashMap<String, ConcreteWebSite> pool = new HashMap<>();//獲得網站分類public WebSite getWebSiteCategory(String key) {if(!pool.containsKey(key)) {pool.put(key, new ConcreteWebSite(key));}return (WebSite)pool.get(key);}//獲得網站分類總數public int getWebSiteCount() {return pool.size();}}//main 方法 public class Client {public static void main(String[] args) {WebSiteFactory factory = new WebSiteFactory();WebSite fx = factory.getWebSiteCategory("產品展示");fx.use();WebSite fy = factory.getWebSiteCategory("產品展示");fy.use();WebSite fz = factory.getWebSiteCategory("產品展示");fz.use();WebSite fa = factory.getWebSiteCategory("博客");fa.use();WebSite fb = factory.getWebSiteCategory("博客");fb.use();WebSite fc = factory.getWebSiteCategory("博客");fc.use();System.out.println("網站分類總數為:" + factory.getWebSiteCount()); //輸出為2}}

?

總結

以上是生活随笔為你收集整理的设计模式的理解:享元模式 (Flyweight)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。