「单态java」单态氧
今天给各位分享单态java的知识,其中也会对单态氧进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、编写一个JAVA类,要求实现类的单态设计模式
- 2、请教关于java的单态模式
- 3、java中单态模式或单例模式(Singleton)有什么意义?
- 4、java里,什么是单态,什么是多态
- 5、什么是单态模式设计及好处
编写一个JAVA类,要求实现类的单态设计模式
package org.jdbc.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//单例模式
public class JdbcUtilsSing {
private String url="jdbc:mysql://localhost:3306/hehe";
private String user = "root";
private String password = "k517liyu";
private static JdbcUtilsSing instance ;
//私有构造函数,不能被外部创建实例
private JdbcUtilsSing() {
}
public static JdbcUtilsSing getInstance() {
//双重检查,保证只会创建一个实例
if(instance == null) {
//防止2个以上的请求并发访问
synchronized (JdbcUtilsSing.class) {
//第一个请求创建实例后,保证后面拿到锁的请求不在创建新的实例
if(instance == null) {
instance = new JdbcUtilsSing();
}
}
}
return instance;
}
//静态代码块在类加载进内存的时候就自动执行
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError();
}
}
//获得连接
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
//释放资源
public void free(ResultSet rs,Statement st,Connection conn) {
try {
if(rs != null){rs.close();}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(st != null) {st.close();}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn != null) {conn.close();}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
请教关于java的单态模式
从你的代码来看只有调用getInstance()方法,才会运行System.out.println("here run init()"); 这一句吧。
就算是在properties.load(...)这一句时构造函数又加载了一次,也不会输出"here run init()"这一句啊~
晕了~
=========================================================
我编译了下你这段代码(稍微有点修改)
import java.util.*;
public class Test{
private static Test instance = null;
public static synchronized Test getInstance() {
if(instance==null){
System.out.println("here run init()");
instance = new Test();
}
return instance;
}
private Test() {
init();
}
private void init(){
Properties p = new Properties();
try{
p.load(Test.class.getResourceAsStream("/option.properties"));
//以下是取配置,设置初始化配置的代码,此处略掉
}catch(Exception ioEx){
System.out.println("配置文件option.properties不存在");
}
}
public static void main(String[] args){
Test t1 = Test.getInstance();
Test t2 = Test.getInstance();
System.out.println(t1 == t2);
}
}
结果输出:
here run init()
配置文件option.properties不存在
true
只有一次……没什么问题啊~
===============================================
我把文件创建了,又运行了一次,输出:
here run init()
true
还是只有一次……没什么问题~
==============================================
对了
p.load(new FileInputStream("option.properties"));
这样也可以
===============================================
我装的 Java 6 Update 10
对了,你的电脑是双核的吗?
可能是双核的原因
同步出现了问题
使对象初始化了两次
我家的单核的……
以前在学校学线程那一块的时候
就因为双核的原因,有的例子老是出问题
java中单态模式或单例模式(Singleton)有什么意义?
你好!
存在某些类不需要实例化多次,也就是说
该类一般没有非静态的成员变量,只需要在系统运行时实例化一次就可以了,所以就存在单例模式
如有疑问,请追问。
java里,什么是单态,什么是多态
单态是一种设计模式,作用是保证在Java应用程序中,一个类Class只有一个实例存在。
多态嘛就是父类实例化不同的子类得到不同的结果,例如老虎和羊的父类是动物,老虎和羊都有一个方法就是吃,当分别用老虎和羊来实例化动物类并调用吃的方法时,一个是吃肉,一个是吃草,这种区别就是多态。
什么是单态模式设计及好处
单态模式是java里的一种设计思想 意思是 一个类只有一个实例存在 其他的操作都来用这个实例 其运用的好处就是节省了内存public Singleton {
private Singleton{}
private Singleton instance = Singleton;
public Singleton getInstance {
instance;
}
}
还有一种形式就是这里public Singleton {
private Singleton instance = null;
public synchronized Singleton getInstance {
(instancenull)
instance= Singleton;
instance; }
}
单态模式中 Singleton.getInstance()可以访问单态类
关于单态java和单态氧的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。