设计模式(18) -- 享元模式

简介: 设计模式(18) -- 享元模式

需求


1dc618a0ed9580ce8bfa6facb208c08f.png


传统解决方式


5d4c6812c8535adbb050f4ddf2e1bce8.png


弊端


46a9d80a6e05e4e3b19d57a0ee70bcdf.png


享元模式


介绍


66ba272a0bfc97be54a5fa679e3d5482.png


类图


1dc618a0ed9580ce8bfa6facb208c08f.png

对原理图的说明


即 模 式的角色及职 责


1)FlyWeight 是抽象的享元角色 , 他是产品的抽象类 , 同时定义出对象的 外部状态 和 内部状态 后面介绍 ) 的接口或实现


2)ConcreteFlyWeight 是具体的享元角色,是具体的产品类,实现抽象角色定义相关业务


3)UnSharedConcreteFlyWeight 是不可共享的角色,一般不会出现在享元工厂。


5d4c6812c8535adbb050f4ddf2e1bce8.png


享元模式解决网站外包问题


46a9d80a6e05e4e3b19d57a0ee70bcdf.png

WebSite

1dc618a0ed9580ce8bfa6facb208c08f.png

ConcreteWebSite

5d4c6812c8535adbb050f4ddf2e1bce8.png

WebSiteFactory

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

Client

66ba272a0bfc97be54a5fa679e3d5482.png88b9988b40447cb37c7e3c492d49867f.png


git地址:

https://github.com/hufanglei/java-design/tree/flyweight


享元模式在源码中的使用


享元模式在 JDK Interger 的应用源码分析

1dc618a0ed9580ce8bfa6facb208c08f.png


享元模式的注意事项和细节


5d4c6812c8535adbb050f4ddf2e1bce8.png

相关文章
|
1月前
|
设计模式 存储 Java
23种设计模式,享元模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的重用。这个模式在处理大量对象时非常有用,特别是当这些对象中的许多实例实际上可以共享相同的状态时,从而可以减少内存占用,提高程序效率
39 4
|
7月前
|
设计模式 存储 缓存
结构型设计模式07-享元模式
结构型设计模式07-享元模式
20 0
|
5月前
|
设计模式 存储 安全
二十三种设计模式全面解析-享元模式(Flyweight Pattern)详解:构建高效共享的对象结构
二十三种设计模式全面解析-享元模式(Flyweight Pattern)详解:构建高效共享的对象结构
|
5月前
|
设计模式
二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理
二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理
|
7月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)
29 0
|
29天前
|
设计模式 存储 Java
小谈设计模式(27)—享元模式
小谈设计模式(27)—享元模式
|
2月前
|
设计模式 缓存 Java
设计模式之享元模式
设计模式之享元模式
|
2月前
|
设计模式 存储 缓存
【设计模式】享元模式
【设计模式】享元模式
|
4月前
|
设计模式 存储 缓存
聊聊Java设计模式-享元模式
享元(Flyweight)模式:顾名思义就是**被共享的单元**。意图是复用对象,节省内存,提升系统的访问效率。比如在红白机冒险岛游戏中的背景花、草、树木等对象,实际上是可以多次被不同场景所复用共享,也是为什么以前的游戏占用那么小的内存,却让我们感觉地图很大的原因。
17 3
聊聊Java设计模式-享元模式
|
9月前
|
设计模式 存储 缓存
享元模式【Java设计模式】
享元模式【Java设计模式】
32 0
享元模式【Java设计模式】