----------------------------------------单例模式(饿汉,懒汉)
//单例
public class TestSingle {
private static TestSingle instance=new TestSingle();//饿汉模式
//1.构造方法私有化
private TestSingle(){
}
//2.提供一个方法获得该对象的实例(懒汉模式)
public static synchronized TestSingle getInstance(){
// if(instance==null){
// instance=new TestSingle();
// }
return instance;
}
}
------------------------------------属性文件的读取
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
public class TestPropertes {
public static void main(String[] args) {
Properties pro=new Properties();
InputStream is=null;
OutputStream out=null;
try {
is=new FileInputStream("db.properties");
pro.load(is);
pro.setProperty("driver", "1234567");
out=new FileOutputStream("db.properties");
pro.store(out,"aaaaaa");
System.out.println(pro.get("hello"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
---------------------------------------属性文件配合单例模式的应用
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 将读属性设计成单例模式
* @author Administrator
*
*/
public class Env extends Properties {
private static Env instance;
private Env() {
//创建一输入流,该路径文件必须在src目录下的文件才有效
InputStream is = this.getClass().getResourceAsStream(
"/resource/db.properties");
try {
//加载文件中的数据到内存中(到properties对象中)
this.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static synchronized Env getInstance() {
if (instance == null) {
instance = new Env();
}
return instance;
}
}
如果不导入import架包
则在获取时应该写Env.getInstance().getProperty("driver");
这样子可以增加代码的可读性,可以避免阅读代码者看作是本类得方法属性.
//静态导入
import static util.Env.getInstance;
public class BaseManagerDAO {
private static final String DRIVER =getInstance().getProperty("driver");
private static final String URL = getInstance().getProperty("url");
private static final String UNAME = getInstance().getProperty("uname");
private static final String UPASS = getInstance().getProperty("upass");
public Connection con=null;
public void getCon(){
try {
Class.forName(DRIVER);
con=DriverManager.getConnection(URL,UNAME,UPASS);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
属性文件属于键值映射的文件
在该示例中,属性文件内容为
#aaaaaa
#Tue Jul 12 15:20:53 CST 2011
url=jdbc:oracle:thin:@localhost:1521:ORCL
driver=oracle.jdbc.driver.OracleDriver
uname=accp
upass=accp