KeyboardPianoV1.4.1 配置管理
程序员文章站
2022-05-24 21:30:27
...
详细步骤
例行说明
- 就如之前
V1.3
-V1.3.1
的关系一样,V1.3
做前期准备,V1.3.1
做调用处理
这里V1.4
-V1.4.1
也是同个道理,但这个版本只做配置管理,为下个版本做调用前准备
具体步骤
-
新建一个
PropertiesManage
配置管理类
这里实际上有一入另一种设计模式 SingletonSingledog单例单身狗模式 ╮( ̄﹏ ̄)╭ -
通过
Properties
怼到配置文件*.properties
,以key
为桥梁,get 到对应的value
(Chinglish lol)
代码分析
-
PropertiesManage
详解
一眼望去好多static
,这其实是Singleton
的特点-
static Properties
成员变量有俩个,因为有两个配置文件要处理,所以分配两条不同的引用 -
Properties.load()
通过class
文件所在处 加载 配置文件(V1.4
已准备好了) -
private PropertiesManage() { }
是什么鬼?
单例下,单纯只想对外暴露静态方法,显式定义私有的空的构造函数,其实是为了避免用户 new 出该类的对象,破坏这个单身派对(单身嘛,还哪来的对象?!还不如做一只无人可 new 的单身汪)
注意:这是单例的特点,也是核心 - 最后俩个方法就是通过配置引用,提起文件中配置信息
提取方式是通过get(key)
=>return value
, 类似Map<K, V>
-
import java.io.IOException;
import java.util.Properties;
public class PropertiesManage {
static Properties propPic = new Properties();
static Properties propWav = new Properties();
static {
try {
propPic.load(PropertiesManage.class.getClassLoader().getResourceAsStream("config\\pic.properties"));
propWav.load(PropertiesManage.class.getClassLoader().getResourceAsStream("config\\wav.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
private PropertiesManage() { }
public static String getPicProperty(String key) {
return propPic.getProperty(key);
}
public static String getWavProperty(String key) {
return propWav.getProperty(key);
}
}
可以在主类
KeyboardPiano
对配置管理类PropertiesManage
再包(封装)一层
这样调用的时候kp.getPicPath(key)
即可,而无需写PropertiesManage.getPicProperty(key);
辣么长
实际上这也是 Manage 设计模式的思维,KeyboardPiano
作为 main class,理应起到 管理的作用 详见 Option1
单例模式详解 请见 相关链接
Options
Option1
-
KeyboardPiano
加入以下两个配置引用方法
/*
* get path of picture from the key
*/
public static String getPicPath(String key) {
return PropertiesManage.getPicProperty(key);
}
/*
* get path of music(wav) from the key
*/
public static String getWavPath(String key) {
return PropertiesManage.getWavProperty(key);
}