对设计模式的研究有一段日子了,而且跨度比较大,现将学习中的一点心得和大家分享.
Singleton Pattern
package
com;
import java.io.File;
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.Enumeration;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;
/** */ /**
* @author chao
* @version 1.0
*
*/
public class SingletonFactory ... {
private static SingletonFactory instance;
private static Object lock = new Object();
private Properties p = new Properties();
private SingletonFactory() ...{
}
/** *//**
* 同步方式产生SingletonFactory自身的instance;
*
* @return instance
*/
public static SingletonFactory getInstance() ...{
if (instance == null) ...{
synchronized (lock) ...{
instance = new SingletonFactory();
}
}
return instance;
}
/** *//**
* 参数为true时产生SingletonFactory自身的instance
*
* @param flag
* @return instance
* @throws ClassNotFoundException
* @throws InstantiationException
* @throws IllegalAccessException
*/
public static SingletonFactory getInstance(boolean flag)
throws ClassNotFoundException, InstantiationException,
IllegalAccessException ...{
if (flag) ...{
Class c = Class.forName(SingletonFactory.class.getName());
SingletonFactory s = (SingletonFactory) c.newInstance();
instance = s;
return instance;
}
return instance;
}
public void read(String path) throws FileNotFoundException, IOException ...{
System.out.println("Beginning read...");
File file = new File(path);
if (!file.exists()) ...{
try ...{
file.createNewFile();
} catch (IOException e) ...{
e.printStackTrace();
}
}
InputStream in = new FileInputStream(file);
p.load(in);
System.out.println(p.get("name"));
if (in != null) ...{
try ...{
in.close();
} catch (IOException e) ...{
e.printStackTrace();
}
p = null;
}
}
public void read(String name, boolean flag) throws IOException ...{
InputStream in = this.getClass().getClassLoader().getResourceAsStream(
name);
p.load(in);
System.out.println(p.get("temp"));
}
public void read(String name, Locale locale) ...{
ResourceBundle bundle = ResourceBundle.getBundle(name, locale);
System.out.println("" + bundle.getObject("temp"));
}
public void write(String path) throws FileNotFoundException, IOException ...{
System.out.println("Beginning write...");
p.setProperty("temp", "temp");
p.setProperty("name", "name");
p.setProperty("age", "age");
File file = new File(path);
if (!file.exists()) ...{
try ...{
file.createNewFile();
} catch (IOException e) ...{
e.printStackTrace();
}
} else ...{
file.delete();
}
OutputStream out = new FileOutputStream(file);
p.store(out, p.toString());
Enumeration enums = p.keys();
while (enums.hasMoreElements()) ...{
System.out.println("" + enums.nextElement());
}
}
}
import java.io.File;
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.Enumeration;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;
/** */ /**
* @author chao
* @version 1.0
*
*/
public class SingletonFactory ... {
private static SingletonFactory instance;
private static Object lock = new Object();
private Properties p = new Properties();
private SingletonFactory() ...{
}
/** *//**
* 同步方式产生SingletonFactory自身的instance;
*
* @return instance
*/
public static SingletonFactory getInstance() ...{
if (instance == null) ...{
synchronized (lock) ...{
instance = new SingletonFactory();
}
}
return instance;
}
/** *//**
* 参数为true时产生SingletonFactory自身的instance
*
* @param flag
* @return instance
* @throws ClassNotFoundException
* @throws InstantiationException
* @throws IllegalAccessException
*/
public static SingletonFactory getInstance(boolean flag)
throws ClassNotFoundException, InstantiationException,
IllegalAccessException ...{
if (flag) ...{
Class c = Class.forName(SingletonFactory.class.getName());
SingletonFactory s = (SingletonFactory) c.newInstance();
instance = s;
return instance;
}
return instance;
}
public void read(String path) throws FileNotFoundException, IOException ...{
System.out.println("Beginning read...");
File file = new File(path);
if (!file.exists()) ...{
try ...{
file.createNewFile();
} catch (IOException e) ...{
e.printStackTrace();
}
}
InputStream in = new FileInputStream(file);
p.load(in);
System.out.println(p.get("name"));
if (in != null) ...{
try ...{
in.close();
} catch (IOException e) ...{
e.printStackTrace();
}
p = null;
}
}
public void read(String name, boolean flag) throws IOException ...{
InputStream in = this.getClass().getClassLoader().getResourceAsStream(
name);
p.load(in);
System.out.println(p.get("temp"));
}
public void read(String name, Locale locale) ...{
ResourceBundle bundle = ResourceBundle.getBundle(name, locale);
System.out.println("" + bundle.getObject("temp"));
}
public void write(String path) throws FileNotFoundException, IOException ...{
System.out.println("Beginning write...");
p.setProperty("temp", "temp");
p.setProperty("name", "name");
p.setProperty("age", "age");
File file = new File(path);
if (!file.exists()) ...{
try ...{
file.createNewFile();
} catch (IOException e) ...{
e.printStackTrace();
}
} else ...{
file.delete();
}
OutputStream out = new FileOutputStream(file);
p.store(out, p.toString());
Enumeration enums = p.keys();
while (enums.hasMoreElements()) ...{
System.out.println("" + enums.nextElement());
}
}
}