《左耳听风》 学习笔记 day25

82 阅读2分钟

大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。今天和大家一起学习架构😊

享元模式是一种结构型设计模式,其主要目的是通过共享已经存在的对象来支持大量细粒度的对象。享元模式通过共享相同状态的对象来减少内存占用,当系统中有大量相似的对象,并且这些对象的状态大部分可以外部化时,应用享元模式可以获得更好的性能。

享元模式的主要特点是:细粒度的对象、共享对象、区分内蕴状态和外蕴状态。所谓细粒度对象是指在一个系统中大量存在的相似对象,它们的个体不重要,数量很多。共享对象是指这些细粒度对象可以共享一些相同的状态,从而减少内存占用。内蕴状态是对象自身内部的状态,外蕴状态是对象依赖于外部环境的状态。

享元模式的关键就是区分这两种状态,内蕴状态属于享元对象自身,存储在享元对象内部。外蕴状态则提取出来,存储在外部状态对象中,享元对象通过引用外部状态对象来获取外蕴状态。享元模式的主要角色包括:享元工厂(FlyweightFactory)、享元(Flyweight)、外蕴状态(UnsharedConcreteFlyweight)。享元工厂负责创建和管理享元对象,确保合理共享;享元对象包含内蕴状态,可以被共享使用;外蕴状态包含了享元对象的外蕴状态,可以被享元对象引用。享

元模式的主要优点是:可以极大减少需要创建的对象数量,从而降低内存占用和提高性能;享元对象可以在多个上下文中被共享使用,增加了程序的复用性。其主要缺点是:区分对象内蕴状态和外蕴状态增加了系统的复杂性;外蕴状态的存储也需要消耗一定资源。享元模式在实际应用中较为常见,如字符串常量池、数据库连接池等都是享元模式的典型应用。总之,享元模式是一种提高程序运行性能和资源利用率的有效方式,适用于需要处理大量细粒度对象的场景。

此文章为4月Day19学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看