多例模式是单例模式的一个变种,可以根据一个特征值购建一个唯一的在JVM中的实例,有多少个特征值就可以创建多少个实例,如果这个特征值是无限的,就可以创建无限多个实例,但是每个实例一定是和特征值绑定的,每一个特征值的实例在JVM中,有且只有1个。
根据这个特点,想到如下的一个应用:
项目中有多个配置文件,但每一个配置文件应该只有一个实例在内存中,没有必要为每一个文件写一个单例类,每一个配置文件名,就是一个特征值,这个应用刚好符合多例模式的使用。
package com.balance.message.common.util; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class MessageProperties { private static Map<String,MessageProperties> map_messageProperties = new HashMap<String,MessageProperties>(19); private Properties ps; private MessageProperties(String propertiesFileName){ InputStream in = null; try{ ps = new Properties(); URL url = this.getClass().getClassLoader().getResource(propertiesFileName); if(url != null){ in = this.getClass().getClassLoader().getResource(propertiesFileName).openStream(); }else { in = this.getClass().getResourceAsStream(propertiesFileName); } ps.load(in); }catch(Exception e){ e.printStackTrace(); }finally{ if(in != null){ try{ in.close(); in = null; }catch(Exception e){ e.printStackTrace(); } } } } public static MessageProperties getInstance(String propertiesFileName){ if(!map_messageProperties.containsKey(propertiesFileName)){ MessageProperties messageProperties = new MessageProperties(propertiesFileName); map_messageProperties.put(propertiesFileName, messageProperties); } return map_messageProperties.get(propertiesFileName); } public String getValue(String key){ return ps.getProperty(key); } }
我们在classpath下放上下面2个配置文件
msg.head.properties
header.cut.as = 160 header.cut.atd = 160 header.cut.fd = 160 header.cut.sq = 160
msg.tailer.properties
trailer.cut.as = 8000 trailer.cut.atd = 7900 trailer.cut.fd = 6800 trailer.cut.sq = 7300
下面使用这个MessageProperties去读取属性,
public static void main(String[] args){ System.out.println(MessageProperties.getInstance("msg.head.properties").getValue("header.cut.fd")); System.out.println(MessageProperties.getInstance("msg.tailer.properties").getValue("trailer.cut.as")); }
执行结果:
160
8000
相关推荐
在VB(Visual Basic 6.0)编程环境中,动态读取TXT文件是一项基本但至关重要的技能,尤其是在处理日志、配置文件或者简单的数据存储时。本项目提供的代码示例展示了如何利用VB实现这一功能,同时允许用户在文本框...
结合上述知识点,`setcfg.sh`可能通过`awk`或`sed`修改配置文件,而`getcfg.sh`则可能利用`grep`或`awk`提取并展示配置信息。在实际应用中,这两个脚本可能会与其他工具如`cron`结合,实现定期自动配置更新或监控。...
器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有...
综上所述,QT编写的文件查询器展示了如何利用QT库来创建一个功能完备的文件管理工具,涵盖了文件系统的操作、GUI设计、事件处理和资源管理等多个方面。对于初学者和有经验的QT开发者来说,都是一个很好的学习和参考...
这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如...
这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如...
总结来说,这个“java语言编写的词法分析器”项目展示了如何利用Java语言和特定的配置文件来实现一个自定义的词法分析工具。开发者可以借此了解编译器前端的基本工作原理,并学习如何处理和分析源代码。对于那些想要...
这些核可以是数字信号处理器、内存控制器等,Python脚本可以根据参数灵活生成不同配置的IP核的Verilog代码。 7. **自动化测试平台**:Python还可以用来创建Verilog的自动化测试平台(Testbench)。利用Python的控制...
这个压缩包可能包含了编辑器的主程序、相关的配置文件、示例歌词文件以及可能的文档或说明。其中,"lrc编辑器"可能是指主程序的可执行文件,用于启动和运行歌词编辑器。用户可以通过这个程序打开LRC文件,查看、编辑...
这种模式在脚本解析、配置文件处理或简单的计算任务中非常常见。 Delphi是一款强大的面向对象的 Pascal 编程环境,它提供了丰富的类库和强大的编译器,使得创建高效的应用程序变得简单。在Delphi中编写解释器,我们...
Struts2是一个强大的Java EE平台上的MVC框架,它的设计目标是简化Web应用程序的...以上便是Struts2配置文件的使用和代码详解,通过理解这一框架的工作原理和优势,开发者可以更加高效地利用Struts2来构建Web应用程序。
`音乐编程示意.doc` 是关于如何编程实现音乐播放的文档,`Music.hex` 是编译后的目标文件,`Music.lnp` 可能是编程器使用的配置文件。 在编写C语言程序时,我们需要理解并熟练运用这些知识点,结合具体的音乐编码和...
配置文件通常包含一系列指令代码,这些代码会被MCU(微控制器)读取并执行,以正确地配置ST7789芯片。用户可能需要根据具体的LCD模组和应用需求调整这些参数。 "ST7789V_SPEC_V1.3.pdf" 则是ST7789的官方规格书,这...
3. **读取和写入文件**:`FileReader`用于读取文件内容,`FileWriter`则用于写入或追加数据到文件。 4. **文件URL**:`file:`协议允许将本地文件转换为URL,便于在其他HTML元素如`<img>`或`<audio>`中使用。 二、...
当用户在控件中选择颜色并触发变化时,相关事件将被触发,开发者可以利用这些事件编写响应逻辑,为应用增加更多的交互性。 ASP.NET开发者在使用AspNetColorV1.0控件时,也不应忽视兼容性和性能优化这两个方面。由于...
在调试和发布模式下,确保正确配置了库文件路径和链接选项。对于debug模式,可能需要链接debug版本的库文件(如`libshapedbg.a`),而在release模式下则链接release版本(如`libshape.a`)。同时,编译选项应与你的...
综上所述,"MPU6050配置文件"和"STM32DMP移植"涉及STM32与MPU6050的硬件连接、传感器的初始化配置、DMP的固件移植和数据处理等多个层面。对于嵌入式开发者来说,理解并熟练掌握这些知识点是成功实现项目的关键。
本项目是关于如何在基于KEIL开发环境的STM32平台上实现对SD卡的读取功能,利用FATFS进行文件系统的管理。 首先,我们要了解STM32。STM32是由意法半导体(STMicroelectronics)推出的基于ARM Cortex-M系列内核的微...