享元模式 墨蓝 2021-12-09 00:53 173阅读 0赞 ## 前言 ## ** 享元模式(Flyweight)**,运用共享技术有效地支持大量细粒度的对象。 ## 一、网站抽象类 ## 1 public abstract class WebSite 2 { 3 //"使用"方法需要传递“用户”对象 4 public abstract void Use(User user); 5 } ## 二、网站具体类 ## 1 public class ConcreteWebSite : WebSite 2 { 3 private string name; 4 public ConcreteWebSite(string name) 5 { 6 this.name = name; 7 } 8 public override void Use(User user) 9 { 10 Console.WriteLine("网站分类:" + name + " 用户:" + user.Name); 11 } 12 } ## 三、网站工厂类 ## 1 public class WebSiteFactory 2 { 3 private Hashtable flyWeights = new Hashtable(); 4 //获得网站分类 5 public WebSite GetWebSiteCategory(string key) 6 { 7 if (!flyWeights.ContainsKey(key)) 8 { 9 flyWeights.Add(key, new ConcreteWebSite(key)); 10 } 11 return (WebSite)flyWeights[key]; 12 } 13 //获得网站分类总数 14 public int GetWebSiteCount() 15 { 16 return flyWeights.Count; 17 } 18 } ## 四、客户端代码 ## 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 WebSiteFactory f = new WebSiteFactory(); 6 7 WebSite f1 = f.GetWebSiteCategory("产品展示"); 8 f1.Use(new User("美美")); 9 10 WebSite f2 = f.GetWebSiteCategory("产品展示"); 11 f2.Use(new User("柔柔")); 12 13 WebSite f3 = f.GetWebSiteCategory("产品展示"); 14 f3.Use(new User("香香")); 15 16 WebSite f4 = f.GetWebSiteCategory("博客"); 17 f4.Use(new User("丽丽")); 18 19 WebSite f5= f.GetWebSiteCategory("博客"); 20 f5.Use(new User("探探")); 21 22 WebSite f6 = f.GetWebSiteCategory("博客"); 23 f6.Use(new User("静静")); 24 25 Console.WriteLine("网站分类总数:{0}", f.GetWebSiteCount()); 26 Console.Read(); 27 } 28 } ## 五、总结 ## 1、如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销就应该考虑使用。 2、对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。 ** 参考数据:**大话设计模式
相关 享元模式 享元模式定义 英文定义:A flyweight is an object that minimizes memory use by sharing as much data 短命女/ 2022年08月02日 14:43/ 0 赞/ 51 阅读
相关 享元模式 享元模式(Flyweight),就是运用共享技术有效地支持大量细粒度的对象。 享元对象能做到共享的关键是区分内部状态(Internal State)和外部状态(Externa 冷不防/ 2022年06月16日 23:20/ 0 赞/ 212 阅读
相关 享元模式 1.使用场景: 内存资源比较稀缺,不要随便浪费,如果有很多相同或者类似的对象,通过使用享元模式的方法,节省内存,例如线程池以及String类等。 2.UML表示 悠悠/ 2022年05月31日 09:49/ 0 赞/ 202 阅读
相关 享元模式 定义 享元模式:运用共享技术有效的支持大量细粒度的对象。 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太 向右看齐/ 2022年05月14日 12:15/ 0 赞/ 52 阅读
相关 享元模式 享元模式 一、概述 1. 内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的 对象,我们可以通过享元模式,节省内存。 2. 享元模式以共享的方式高效地 忘是亡心i/ 2022年04月18日 04:55/ 0 赞/ 213 阅读
相关 享元模式 前言 享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。 一、网站抽象类 1 public abstract c 墨蓝/ 2021年12月09日 00:53/ 0 赞/ 174 阅读
相关 享元模式 [享元模式][Link 1] 模式说明 所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现 ゝ一世哀愁。/ 2021年11月23日 06:46/ 0 赞/ 265 阅读
相关 享元模式 当系统中出现大量相同、相似的对象时,会导致系统性能下降。享元模式通过共享技术对相同或相似对象进行重用,从而解决这一问题。在享元模式中,存储共享实例对象的地方称为享元池 (Fly 怼烎@/ 2021年11月11日 10:50/ 0 赞/ 314 阅读
相关 享元模式 12.享元模式 我们可以共用一个 Hello world 对象,其中字符串 “Hello world” 为内部状态,可共享;字体颜色为外部状态,不可共享,由 逃离我推掉我的手/ 2021年09月17日 00:00/ 0 赞/ 312 阅读
相关 享元模式 元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的... 小灰灰/ 2020年06月13日 05:55/ 0 赞/ 471 阅读
还没有评论,来说两句吧...