单例模式

singleton pattern 单例模式

背景:在建立与数据库的连接时,可以创建一个属性文件,然后创建一个工具类来读取属性文件(配置文件),其中 要用到I/O流,但是I/O流很耗费资源,所以可以使用单例模式控制工具类实例的生成个数,那么什么是单例模式呢?如何使用?



单例模式可以控制类的实例的生成个数,即单例模式可以保证系统中一个类只有一个实例
单例模式的特点:
  1. 某个类只能有一个实例

  2. 它必须自行创建这个实例

  3. 它必须自行向整个系统提供这个实例

具体实现

  1. 单例模式的类只提供私有的构造函数
  2. 类定义中含有一个该类的静态私有对象
  3. 该类提供一个静态的共有的函数用于创建或者获取它本身的静态私有对象

将构造函数设成private(即不想让别人用new 方法来创建多个对象)是单例模式经常用到的方式,可以在类里面生成一个对象,然后写一个public static方法把这个对象return出去。(eg:public 类名 getInstance(){return 你刚刚生成的那个类对象;})如果要用这个类的实例就用类名.getInstance()获得这个对象。


eg.

public class ConfigManager{
      private static ConfigManager configManager;
      private static Properties properties;

     private ConfigManager(){
          String configFile="***.properties";
          properties=new Properties();
          InputStream in= ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
          properties.load(in);
        in.close();

    }
}<pre class="java" name="code">    public static ConfigManager getInstance(){//静态获得该类型对象的方法
          if(configManager==null){
             configManager=new Configmanager();//保证只有一个对象
         }
             return configManager;<pre class="java" name="code">    public String getString (Sting key){
      return properties.getProperty(key);
     }
}

调用

	public boolean getConnection(){
		//读出配置信息
		String driver=ConfigManager.getInstance().getString("jdbc.driver_class");
		String url=ConfigManager.getInstance().getString("jdbc.connection.url");
		String username=ConfigManager.getInstance().getString("jdbc.connection.username");
		String password=ConfigManager.getInstance().getString("jdbc.connection.password");
		try {
			//1.加载驱动 Class.forName()
			Class.forName(driver);
			//2.获得数据库连接(Connection)
			conn=DriverManager.getConnection(url,username,password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

附:属性文件database.properties

jdbc.driver_class=oracle.jdbc.driver.OracleDriver
jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.connection.username=user
jdbc.connection.password=tiger

 
 
 
 
以上是本人自己的见解和总结 ,希望对自己和他人都有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值