首页 > 其他分享 >享元模式

享元模式

时间:2022-09-23 13:33:10浏览次数:48  
标签:享元 状态 对象 模式 实例 共享

理论

享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。

内部状态与外部状态:

在享元对象内部并且不会随环境变化而改变的共享部分,称为享元对象的内部状态。而随着环境变化而改变的、不可以共享的状态就是外部状态。

享元模式的优点:

  1. 可以避免大量相似类的开销。

  2. 运用共享技术有效地支持大量细粒度地对象。

在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够受大幅度地减少需要实例化的类的数量,如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例地数目,

享元模式的缺点:

使用享元模式需要维护一个记录了系统已有地所有享元地列表,需要耗费资源。另外享元模式使得系统更加复杂。为了使对象可以共享,需要将一些状态外部化,使得程序地逻辑复杂化。因此应当在有足够多地对象实例可供共享时才值得使用享元模式。

享元模式的应用场景:

  1. 在一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时

  2. 对象的大多数状态是外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象

实例

帮别人做网站的代码,客户需要的网站结构相似度很高,即相同网站的实例对象很多,造成服务器的大量资源浪费。使用共享技术减少服务器资源的浪费。

UML类图

代码实现

 

标签:享元,状态,对象,模式,实例,共享
From: https://www.cnblogs.com/kyzh-lhl/p/16722377.html

相关文章

  • 设计模式-结构型模式之装饰器
    实现AOP(面向切面编程)的一种便捷方式,额外扩展统一管理装饰器的实现我在语言进阶篇中有提到,这里不再赘述1fromdecoratorimportdecorator234@decorator5......
  • 策略模式演示
    参考:AwardSuper.csusingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceStrategyMode{abstractclassAwardSuper{pub......
  • 设计模式-结构型模式之外观
    简化应用程序内部接口,提供一个单一接口以供外部(前端or客户侧)调用1classValley:23defrun(self):4self.pre_declare()5self.declar......
  • 设计模式之(12)——外观模式
    外观模式(facadePattern)又叫门面模式,隐藏了子系统的复杂实现,为子系统中的一组接口提供了一个统一的访问入口,使得子系统容易被访问或使用,说白了就是把复杂的子系统封装成......
  • 1.设计模式-单例
    单例模式单例模式的核心是保证一个类只有一个实例,并且提供一个访问实例的全局访问点。单例的使用场景Spring中bean对象的模式实现方式servlet中每个servlet的实例s......
  • Python实现单例模式
    单例模式介绍:单例模式是一种常用的软件设计模型,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。......
  • 设计模式-创建型模式之工厂
    一、简单工厂创建对象的工作交由统一的函数接口来管理,传入不同的参数,返回不同的类对象1classAqSb:23def__repr__(self):4return"按期申......
  • JAVA中容器设计的进化史:从白盒到黑盒,再到跻身为设计模式之一的迭代器
    大家好,又见面了。在我们的项目编码中,不可避免的会用到一些容器类,我们可以直接使用List、Map、Set、Array等类型。当然,为了体现业务层面的含义,我们也会根据实际需要自行封......
  • VMware虚拟机三种网络模式
    桥接模式NAT模式主机模式......
  • 桥接模式
    桥接模式音频接口packagebridgetypeVideointerface{decode(string)}AVI格式packagebridgetypeAVIstruct{}funcNewAVI()*AVI{return&AVI......