举个例子🌰:
我今天从群里老哥手里拿到了网盘资源,我朋友也拿到了一样的网盘资源。那么我们两个手里的资源肯定是同一份。存在服务器的某处,我们俩从不同的入口访问了而已。
这个就是享元模式。
享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。
说人话:大家一起看资源,服务器保存一份就好了,不会爆内存。
意图:运用共享技术有效地支持大量细粒度的对象。讲讲这个细粒度是什么,指的是你看片的时候,时间,入口,设备可能是不一样的,但是片本身的资源是固定的,这个就是细粒度。
反应到实际项目中:你将面对两种状态 “外部状态” 和 “内部状态” 。 外部状态指的是动态变化的参数(看片的时候,时间,入口,设备),内部状态是不变的(片本身的资源是固定的)
最大的应用是 池技术 例如:数据库连接池 线程池
look,flyweight(抽象享元)用于定义享元对象,接受客户端传过来的外部状态
flyweightFactory(享元工厂🏭),是一个池容器,用于维护享元对象
代码dddddddemo,共享单车的例子
1.定义抽象享元
2.享元工厂(维护享元对象的池子)
3. 客户端(给予享元对象一些外部状态)