栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java设计模式】Java设计模式之(二十三)享元模式(Flyweight Pattern)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java设计模式】Java设计模式之(二十三)享元模式(Flyweight Pattern)

本文目录

一、组合模式介绍

1.1 含义

1.2 适用场景

1.3 主要解决

1.4 应用实例

1.5 优缺点

二、组合模式实现

2.1 类图

2.2 角色分析

2.3 代码实现

三、源码分析


这种类型的设计模式属于结构型模式。

一、组合模式介绍

1.1 含义

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

1.2 适用场景

① 系统有大量相似对象。

② 需要缓冲池的场景。

1.3 主要解决

降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。

关键代码:用 HashMap/HashTable 存储这些对象。

1.4 应用实例

① 数据库的数据池;

② JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面;

1.5 优缺点

优点:

① 它可以极大减少内存中对象的数量,使得相同对象或相似对象在内存中只保存一份;

② 享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享。

缺点:

① 享元模式使得系统更加复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂化;

② 为了使对象可以共享,享元模式需要将享元对象的状态外部化,而读取外部状态使得运行时间变长。

注意事项:

1、注意划分外部状态和内部状态,否则可能会引起线程安全问题。

2、这些类必须有一个工厂对象加以控制。

二、组合模式实现

所有设计模式的代码实现例子都可在码云上查看哦,感兴趣的可以查看哈,码云地址:https://gitee.com/no8g/java-design-patterns

2.1 类图

2.2 角色分析

Flyweight:享元接口,通过这个接口传入外部状态并作用于外部状态;

ConcreteFlyweight:具体的享元实现对象,必须是可共享的,需要封装享元对象的内部状态;

UnsharedConcreteFlyweight:非共享的享元实现对象,并不是所有的享元对象都可以共享,非共享的享元对象通常是享元对象的组合对象;

FlyweightFactory:享元工厂,主要用来创建并管理共享的享元对象,并对外提供访问共享享元的接口。

2.3 代码实现


三、源码分析

暂无,后续再更新!


完结!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号