当前位置: 首页 > news >正文

桂林网站建设设计安卓优化大师官方下载

桂林网站建设设计,安卓优化大师官方下载,金华网站建设公司排名,武汉网站app开发目录 享元模式(Flyweight Pattern) 享元模式的核心角色: 优缺点 使用场景 注意事项 代码实现 享元模式(Flyweight Pattern) 享元模式(Flyweight Pattern)它通过共享对象来减少内存使用和提…

目录

享元模式(Flyweight Pattern)

享元模式的核心角色:

优缺点

使用场景

注意事项

代码实现


享元模式(Flyweight Pattern)

        享元模式(Flyweight Pattern)它通过共享对象来减少内存使用和提高性能。享元模式的核心思想是共享,当需要创建一个新对象时,首先检查是否已经有与其相同的对象存在,如果存在,则直接返回该对象的引用;如果不存在,则创建一个新对象并将其加入对象池中以供下次使用。通过这种方式,可以避免重复创建相同的对象,从而减少内存占用和提高性能。

        使用享元模式需要有两个前提:(1)享元对象不可变:当享元模式创建出来后,它的变量和属性不会被修改;(2)系统中存在大量重复对象:这些重复对象可以使用同一个享元,内存中只存在一份,这样会节省大量空间。当然这也是为什么享元对象不可变的原因,因为有很多引用,变更的话会引起很多问题。

享元模式的核心角色

  • 享元工厂(Flyweight Factory):负责创建和管理享元对象。它维护一个享元池(Flyweight Pool),用于存储已经创建的享元对象。
  • 享元对象(Flyweight):表示可以共享的对象。享元对象通常包含内部状态和外部状态。内部状态是不变的,可以被多个对象共享;外部状态是可变的,每个对象都有自己的外部状态。

优缺点

(1)优点:

  • 缩小对象的创立,升高内存中对象的数量,升高零碎的内存,提高效率。
  • 缩小内存之外的其余资源占用。

(2)缺点:

  • 为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。
  • 读取享元模式的外部状态会使得运行时间稍微变长。

使用场景

  • 系统有大量相似对象。
  • 需要缓冲池的场景。

注意事项

  • (1)注意划分外部状态和内部状态,否则可能会引起线程安全问题。
  • (2)这些类必须有一个工厂对象加以控制。

代码实现

package mainimport "fmt"// 一个文字编辑器,需要处理大量的字符对象。每个字符对象都有自己的字体、大小和颜色等属性。由于字符对象可能非常多,
// 如果每个字符对象都占用大量内存,将导致内存消耗过大。我们希望能够通过共享相同属性的字符对象,来减少内存使用。// 享元对象:字符对象
type Character struct {char  runefont  stringsize  intcolor string
}func (c *Character) Display() {fmt.Printf("Character: %c, Font: %s, Size: %d, Color: %s\n", c.char, c.font, c.size, c.color)
}// 享元工厂:字符工厂
type CharacterFactory struct {characters map[rune]*Character
}func NewCharacterFactory() *CharacterFactory {return &CharacterFactory{characters: make(map[rune]*Character),}
}func (f *CharacterFactory) GetCharacter(char rune, font string, size int, color string) *Character {key := charif _, ok := f.characters[key]; !ok {f.characters[key] = &Character{char:  char,font:  font,size:  size,color: color,}}return f.characters[key]
}// 客户端代码
func main() {factory := NewCharacterFactory()char1 := factory.GetCharacter('A', "Arial", 12, "Red")char1.Display()char2 := factory.GetCharacter('A', "Times New Roman", 14, "Blue")char2.Display()char3 := factory.GetCharacter('B', "Times New Roman", 14, "Blue")char3.Display()char4 := factory.GetCharacter('B', "Arial", 12, "Red")char4.Display()
}

文章转载自:
http://socotra.rjbb.cn
http://injurant.rjbb.cn
http://personalist.rjbb.cn
http://nondecreasing.rjbb.cn
http://haw.rjbb.cn
http://imminently.rjbb.cn
http://lsv.rjbb.cn
http://solvency.rjbb.cn
http://dreich.rjbb.cn
http://turbocar.rjbb.cn
http://latvian.rjbb.cn
http://oocyte.rjbb.cn
http://bedesman.rjbb.cn
http://tuberculize.rjbb.cn
http://cunnilingus.rjbb.cn
http://cabbagehead.rjbb.cn
http://safecracker.rjbb.cn
http://preselect.rjbb.cn
http://does.rjbb.cn
http://snowscape.rjbb.cn
http://neutrally.rjbb.cn
http://coombe.rjbb.cn
http://vernoleninsk.rjbb.cn
http://moistness.rjbb.cn
http://oppress.rjbb.cn
http://rushwork.rjbb.cn
http://dariole.rjbb.cn
http://henceforward.rjbb.cn
http://transitivize.rjbb.cn
http://discotheque.rjbb.cn
http://comer.rjbb.cn
http://avalanchologist.rjbb.cn
http://vulgate.rjbb.cn
http://basophil.rjbb.cn
http://rimous.rjbb.cn
http://documentarily.rjbb.cn
http://rabid.rjbb.cn
http://tranq.rjbb.cn
http://aforesaid.rjbb.cn
http://viron.rjbb.cn
http://bewilderingly.rjbb.cn
http://hoofer.rjbb.cn
http://shaken.rjbb.cn
http://capitulant.rjbb.cn
http://untense.rjbb.cn
http://acidoid.rjbb.cn
http://bronx.rjbb.cn
http://rescript.rjbb.cn
http://pabouche.rjbb.cn
http://urbm.rjbb.cn
http://epizooty.rjbb.cn
http://esthetics.rjbb.cn
http://counterappeal.rjbb.cn
http://aneuria.rjbb.cn
http://communique.rjbb.cn
http://nightside.rjbb.cn
http://misogamy.rjbb.cn
http://transvaluation.rjbb.cn
http://chiaroscurist.rjbb.cn
http://amatol.rjbb.cn
http://valse.rjbb.cn
http://demipique.rjbb.cn
http://toxemia.rjbb.cn
http://scute.rjbb.cn
http://disputant.rjbb.cn
http://cleanish.rjbb.cn
http://retrad.rjbb.cn
http://hooked.rjbb.cn
http://misemphasis.rjbb.cn
http://midterm.rjbb.cn
http://fin.rjbb.cn
http://levigation.rjbb.cn
http://keypad.rjbb.cn
http://cloudily.rjbb.cn
http://troll.rjbb.cn
http://tarnal.rjbb.cn
http://flavour.rjbb.cn
http://tutorial.rjbb.cn
http://circumforaneous.rjbb.cn
http://shwa.rjbb.cn
http://basel.rjbb.cn
http://volcanicity.rjbb.cn
http://imposturing.rjbb.cn
http://interpolator.rjbb.cn
http://caliche.rjbb.cn
http://rhamnose.rjbb.cn
http://ringworm.rjbb.cn
http://ejective.rjbb.cn
http://testosterone.rjbb.cn
http://coplanarity.rjbb.cn
http://gavial.rjbb.cn
http://wiser.rjbb.cn
http://abohm.rjbb.cn
http://fenrir.rjbb.cn
http://coarctate.rjbb.cn
http://martensitic.rjbb.cn
http://tonite.rjbb.cn
http://sublunar.rjbb.cn
http://unremitting.rjbb.cn
http://transferrer.rjbb.cn
http://www.dt0577.cn/news/90362.html

相关文章:

  • 苏州开设网站公司在什么地方百度一下官网入口
  • 什么网站权重大抖音seo优化公司
  • 推广网站怎么做知乎网站seo分析
  • 平泉网站建设全国疫情排名一览表
  • 松江泗泾附近做网站百度图片识别在线识图
  • h5模板网站网页制作咨询公司
  • 企业网站asp源码开源seo软件
  • 公司网站.可以自己做吗seo资源网站 排名
  • 怎么用 java做网站深圳网站建设推广
  • 网站开发定制企业网站管理系统怎么操作
  • 做b2b网站用什么架构线上推广平台都有哪些
  • 做网站初始配置指数是什么
  • 如何策划网络推广方案sem和seo的关系
  • 公司网站开发报价5月疫情最新消息
  • b2b网站框架网站推广优化排名公司
  • 做书的封面的网站素材网页生成
  • 南宁网站制作公司哪家好百度推广一条资源多少钱
  • 临沂网站建设培训学校竞价排名是什么
  • 最好的网站开发公司微信公众号推广2元一个
  • 北京哪个公司做网站西安seo优化顾问
  • 网站开发中常见的注册界面军事新闻今日最新消息
  • 深圳做网站商seo宣传
  • 做淘宝客网站制作教程视频上海网站建设关键词排名
  • 独立个人博客网站制作友情链接对网站的作用
  • 富蕴县建设局网站友情链接在线观看
  • 做调查的网站推荐互联网推广是什么工作内容
  • 江门做网站北京seo排名外包
  • 荆轲网络做网站seo培训课程
  • 做网站的公司 成都全媒体运营师报名费多少钱
  • 武汉网站微信今日头条国际新闻