JavaWeb_(设计模式)单例模式

 

 

  菜鸟教程  传送门

  

  单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

  这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

 

 实例:

  用到两个类JDBCUtil.java(单例类)和JDBCUtil_use.java

  无需在JDBCUtil_use.java中实例出JDBCUtil对象

  JDBCUtil_use.java通过JDBCUtil.instance去使用单例类中公有方法

 

 

package Gary03;

public class JDBCUtil {

    //设置成单例模式 只在JDBCUtil中new一次    在其他地方不需要再动态申请
    public static JDBCUtil instance = new JDBCUtil();
    
    //构造方法私有化,
    private JDBCUtil() {
        
    }
    
    public void GetConnection() {
        System.out.println("GetConnection()");
    }
    
    
//    public static void main(String[] args) {
//        JDBCUtil.instance.GetConnection();
//        
//        //JDBCUtil util= new JDBCUtil();
//        //util.GetConnection();
//        
//    }
    
}
JDBCUtil.java

 

package Gary03;

import Gary03.JDBCUtil;

public class JDBCUtil_use {
    public static void main(String[] args) {
        
        //JDBCUtil jdbc = new JDBCUtil();
        //直接通过JDBCUtil.instance去访问GetConnection()方法
        JDBCUtil.instance.GetConnection();
    }
}
JDBCUtil_user.java

 

  程序结构

  

 

  设置成单例模式后为节约性能只在JDBCUtil中new一次 在其他地方不需要再动态申请

  为防止在其他地方类似如下通过new实例化

JDBCUtil jdbc = new JDBCUtil();

 

  可将JDBCUtil.java中将构造方法私有化,外部将无法new JDBCUtil()

    private JDBCUtil() {
        
    }

 

  单例模式要设置成static静态,JDBCUtil_use.java外部访问JDBCUtil.java中的GetConnection方法可通过instance来访问

public class JDBCUtil {

    //设置成单例模式 只在JDBCUtil中new一次    在其他地方不需要再动态申请
    public static JDBCUtil instance = new JDBCUtil();
    
    //构造方法私有化,
    private JDBCUtil() {
        
    }
    
    public void GetConnection() {
        System.out.println("GetConnection()");
    }
    
}

 

public class JDBCUtil_use {
    public static void main(String[] args) {
        
        //JDBCUtil jdbc = new JDBCUtil();
        //直接通过JDBCUtil.instance去访问GetConnection()方法
        JDBCUtil.instance.GetConnection();
    }
}

 

posted @ 2019-01-22 12:31  Cynical丶Gary  阅读(260)  评论(0编辑  收藏  举报