我对设计模式的理解(一)

对设计模式的研究有一段日子了,而且跨度比较大,现将学习中的一点心得和大家分享.

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());
        }

    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值