Java设计模式之——享元模式

【Java设计模式】Java设计模式之(二十三)享元模式(Flyweight Pattern) 本文目录 一、组合模式介绍 1.1 含义 1.2 适用场景 1.3 主要解决 1.4 应用实例 1.5 优缺点 二、组合模式实现 2.1 类图 2.2 角色分析 2.3 代码实现 三、源码分析 这种类型的设计模式属于结构型模式。 一、组合模式介绍 1.1 含义 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对 阅读详情

编写享元类
编写一个工厂,在工厂里面定义hashMap类型的享元池,用get函数进行享元的生成
例子:Frame上文本框输入一个字符串,回车,出现以这个字符串为标题的Dialog ,但是,当你输入的一个字符串如果是以前出现过的,那么就不要新分配内存.

代码:
Word.java
package 享元模式;

public class Word {
	private String key;
	private String content;
	public Word(String key, String content) {
		super();
		this.key = key;
		this.content = content;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.key+":"+this.content;
	}
	
}

WordPool.java
package 享元模式;

import java.security.Policy;
import java.util.HashMap;

public class WordPool {
	private static  HashMap pool = new HashMap();
	public static Word getWord(String key,String content){
		Word word = (Word)pool.get(key);
		if(word==null){
			word = new Word(key, content);
			pool.put(key, word);
		}
		return word;
	}
	
	
	

}



Flyweight.java
package 享元模式;

import java.util.HashMap;

public class Flyweight {

	
	public static void main(String[] args) {
		Word w1 = WordPool.getWord("刘德华","001");
		Word w2 = WordPool.getWord("张学友","002");
		Word w3 = WordPool.getWord("刘德华","002");
		Word w4 = WordPool.getWord("刘德华","004");
		System.out.println(w4);
		
	}
}


享元模式小结
享元模式的目的:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)对象.
Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度.
条件:享元多而小,并且会在以后经常使用,但是无法估计使用哪一个





Tlsr8258开发-程序烧写 开源一小步,进步一大步 阅读详情

相关推荐

ES8311音频Codec避坑指南:从I2C通信、电平匹配到回环测试的保姆级调试笔记

本文详细解析了ES8311音频编解码芯片的调试全流程,涵盖I2C通信建立、电平匹配、主从模式配置等关键环节。通过真实案例和实用技巧,帮助工程师快速定位和解决音频Codec常见问题,提升硬件调试效率。特别针对回环测试、功耗分析等高频故障点提供了可复用的排查方法论。

weixin_42532938的博客 274

享元模式

1.享元模式 * 运用共享技术有效的支持大量细粒度对象的复用,系统只使用少量的对象,而这些对象的都很相似,状态的变化很小,可以实现对象的多次复用,由于享元模式要求能够共享的对象必须是细粒度对象,因此又称为轻量级模式。

说文科技,做有态度的研究。 917

Solidworks转URDF避坑实录:从履带机器人到ROS仿真的完整配置流程

本文详细介绍了将Solidworks履带机器人模型转换为URDF格式并配置ROS仿真的完整流程,重点解析了坐标系设置、复杂关节定义、插件配置等关键步骤中的常见问题与解决方案,帮助开发者高效实现履带机器人在RVIZ和Gazebo中的精确仿真。

weixin_30693683的博客 456

Java设计模式—享元模式(Flyweight Pattern)

享元模式 业务需求 小型外包项目,产品网站,不同客户要求不同 有些客户要求以新闻形式发布;有些客户要求以博客形式发布;有些客户要求以微信公众号形式发布; 传统解决思路 复制粘贴,根据不同用户的需求,各自修改 每个网站各租用一个空间 传统解决思路问题分析 交付的网站结构相似度很高,且访问量都不高;分别使用不同的虚拟空间,比较浪费服务器资源 解决思路:整合到一个网站,共享其中相关代码和数据,减少服务器资源浪费 对于代码来说,每个项目就是一个实例,维护和扩展更容易—享元模式 基本介绍 享元模式也叫蝇

super_song的博客 390

基于电子海图的水面无人艇全局路径规划

Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基于电子海图的水面无人艇全局路径规划)   该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Gl...

weixin_30797199的博客 1590

python全栈入门到实战【基础篇 02】环境搭建:Python解释器与PyCharm、VSCode编辑器安装配置详解

本文详解Python环境搭建步骤。首先安装解释器(运行代码核心),需从官网下载,选3.8及以上版本(勿选2.x)。Windows安装必勾“Add Python.exe to PATH”,验证用`python --version`;Mac选universal2安装包,验证用`python3 --version`。 编辑器二选一:PyCharm社区版(免费,新手推荐),安装后需配置解释器路径;VSCode轻量,需装Python插件并选择解释器。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 5万+

Java设计模式之享元模式

Java设计模式之享元模式1. 享元模式概述1.1 享元定义1.2 享元模式注意事项2. 享元模式实现 1. 享元模式概述 1.1 享元定义 1)享元模式(享元模式)也叫蝇量模式:利用共享技术有效地支持大量细粒度的对象 2) 常用于系统相关开发,解决系统的性能问题。 像数据库连接池,里面都是创建好的连接对象,在这些连接对象有我们需要的则直接拿来用,避免重新创建,如果没有我们需要,则创建一个。 3)享元模式能够解决重复对象的内存浪费问题,当系统大量类似对象,需要缓冲池时。不需要总是创建对象,可以从缓冲池里拿。

靖节先生的博客 2191

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3576

Java 设计模式之享元模式(Flyweight Pattern)

旨在通过共享对象来有效支持大量细粒度对象的复用,从而减少内存占用和提高性能。假设需要绘制大量树(Tree)对象,树的类型(名称、颜色)可共享,位置和年龄为外部状态。类的常量池是享元模式的典型实现,相同字面量的字符串对象被复用。,适用于存在大量重复对象且对象的大部分状态可以外部化的场景。:通过共享内部状态减少对象数量,外部状态由客户端传递。:存在大量相似对象且内存占用是瓶颈时优先考虑。:享元工厂管理共享对象池,确保唯一性。:字符的字体、颜色、大小。:字符在文档中的位置。:子弹的位置、速度。

guanxin0206的博客 730

【GameFramework框架内置模块】8、文件系统(File System)

最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢?

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2451

13、多实例任务(multi instance)

多实例任务,是指一个类型的任务需要循环执行多次,包括串行多实例任务和并行多实例任务。

leyoliu的博客 3202

java设计模式(十二)享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern)的介绍、应用场景、优缺点以及代码实现。并有示例的讲解。

weixin_70044963的博客 1283

使用CUDA进行按流排序的内存分配的示例程序

在GPU编程中,按流排序的内存分配是一种常见的优化技术,它可以提高内存访问的效率。通过将内存分配与特定的CUDA流相关联,可以确保在GPU上的并发操作期间,内存分配操作与其他GPU计算操作同时进行,从而减少了潜在的内存访问延迟。请注意,上述示例中的代码仅供参考,并可能需要根据实际需求进行修改和调整。此外,为了完整性,我们省略了一些细节,例如主机指针的分配和释放,以及错误处理和错误检查等。在该示例中,我们创建了4个CUDA流,并使用内存池进行内存分配。然后,我们在每个流上执行了相应的内存访问操作,并使用。

Byte_O_O的博客 281

Java设计模式 十二 享元模式 (Flyweight Pattern)

享元接口定义了对象的共享方法。

空 1221

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java设计模式——享元模式【Flyweight Pattern】

Java设计模式、享元模式、Flyweight Pattern

scorpio的博客 822

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【设计模式】用Java实现享元模式

享元模式(Flyweight Pattern)是一种结构型设计模式旨在通过共享对象来最小化内存使用和提高性能。享元模式通过将对象的状态分为内部状态(Intrinsic State)和外部状态(Extrinsic State),并共享内部状态,从而在大量相似对象之间实现有效的资源共享。内部状态是对象可共享的、独立于对象场景的状态,它可以被多个对象共享。外部状态是对象特定的、依赖于对象场景的状态,它不能被共享,每个对象都会保持一份独立的外部状态。

分享Java硬核干货 9747

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式 · 享元模式(Flyweight Pattern)java

享元模式是一种结构型设计模式,通过共享相似对象的内在状态来减少内存消耗。其核心思想是将对象分为可共享的内在状态(如树的纹理、颜色)和不可共享的外部状态(如坐标)。该模式包含享元工厂、抽象享元接口和具体享元类三个核心角色,工厂负责管理对象池并复用已有对象。典型应用场景如游戏开发中渲染大量相似树木,通过共享树种和纹理数据,仅存储每棵树的坐标差异,显著降低内存占用。该模式能有效解决海量重复对象导致的内存浪费问题。

qq_61875563的博客 699

JAVA设计模式之享元模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述享元(Flyweight)模式的:   Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 Java中的String类型   在JAVA语言中,String类型就是使用了享元模式。S...

weixin_30663391的博客 89

Java设计模式之享元模式(Flyweight Pattern)

Java设计模式之享元模式(Flyweight Pattern)

慕白Lee的博客 640

Java设计模式--享元模式【Flyweight Pattern】

享元模式是对象的结构模式。享元模式的意图是通过共享高效地支持大量细粒度的对象,是让多个客户对象间共享访问限定数量的对象,享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。     内蕴状态(Internal State)是存储在享元对象内部的,并且是不会随环境的改变而有所不同。因此,一个享元可以具有内蕴状态并可以共享。

CoderLover 381

Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解

享元模式也叫蝇量模式,是运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。

知唔猪的博客 1644

Java设计模式-享元模式

享元模式是Java设计模式中一种被广泛应用的优化性能的设计模式。通过共享内部状态来减少对象的数量,从而降低内存消耗和提升系统性能。与单例模式和原型模式相比,享元模式注重对象的重用而不是单例或复制。使用Java编程语言实现享元模式可以通过共享池来管理对象的共享和创建。该模式的优点在于减少对象数量、提升性能和简化对象结构。通过共享对象,系统内存占用减少,同时避免了重复创建对象的开销,从而提高了系统的性能。通过划分内部状态和外部状态,对象结构更清晰,更易于理解和维护。然而,享元模式也存在一些缺点和限制。

小薯条的博客 507

java i o设计模式_Java设计模式之享元模式

Java设计模式之享元模式在说享元模式之前来先看一道题:public static void main(String[] args) {Integer i1 = new Integer(50);Integer i2 = new Integer(50);System.out.println(i1 == i2);Integer i3 = new Integer(500);Integer i4 = ne...

weixin_35539437的博客 81

【设计模式】Java设计模式 - 享元模式

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。————菜鸟联盟只有一个借书的方法/*** @Description: 图书馆 - 抽象类*/// 抽象方法 - 借书}

Huangjiazhen711的博客 170
上一篇: java设计模式之——Proxy:代理模式
下一篇: 学习挖掘机和程序员哪个好
freewind
博客等级 码龄16年 136粉丝 108原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值