导航:首页 > 编程语言 > java单态模式

java单态模式

发布时间:2022-09-18 11:17:32

① 请教关于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的单态模式中用到了static。

1 可以用懒汉式单例:
class A{
private static A a=null;

private A(){

}

public synchronized static A getInstance(){
if(a == null){
a = new A();
}

return a;
}
}

2 既然是单例 所以操作的是同一对象 当然会干扰

③ java中常用的设计模式有哪些

1.单例模式(有的书上说叫单态模式其实都一样)
该模式主要目的是使内存中保持1个对象
2.工厂模式
该模式主要功能是统一提供实例对象的引用。看下面的例子:
public class Factory{
public ClassesDao getClassesDao(){
ClassesDao cd = new ClassesDaoImpl();
return cd;
}
}
interface ClassesDao{
public String getClassesName();
}
class ClassesDaoImpl implements ClassesDao {
public String getClassesName(){
System.out.println("A班");
}
}
class test
{
public static void main(String[] args){
Factory f = new Factory();
f.getClassesDao().getClassesName();
}
}
这个是最简单的例子了,就是通过工厂方法通过接口获取对象的引用
3.建造模式
该模式其实就是说,一个对象的组成可能有很多其他的对象一起组成的,比如说,一个对象的实现非常复杂,有很多的属性,而这些属性又是其他对象的引用,可能这些对象的引用又包括很多的对象引用。封装这些复杂性,就可以使用建造模式。
4.门面模式
这个模式个人感觉像是Service层的一个翻版。比如Dao我们定义了很多持久化方法,我们通过Service层将Dao的原子方法组成业务逻辑,再通过方法向上层提供服务。门面模式道理其实是一样的。
5.策略模式
这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。

④ java 中的单态模式是什么概念,有什么具体的应用,据个例子谢谢了

单例模式就是永远指定的是同一个对象!!!
给段代码给你,自己多理解!!!

public class SingleClass {

int i = 0;

static SingleClass sc = new SingleClass();

private SingleClass() {
}

public void test() {
System.out.println("hello" + (++i));
}

public static void main(String[] args) {
SingleClass c1 = SingleClass.sc;
SingleClass c2 = SingleClass.sc;
c1.test();
c2.test();

}
}

⑤ java中单态模式或单例模式(Singleton)有什么意义

你好!
存在某些类不需要实例化多次,也就是说
该类一般没有非静态的成员变量,只需要在系统运行时实例化一次就可以了,所以就存在单例模式
如有疑问,请追问。

⑥ java中单态模式或单例模式(Singleton)有什么意义

8.单态模式或单例模式(Singleton)


态模式有什么用呢?想一下Adobe Photoshop ,处理两张图,会启动两个photoshop吗?多耗费内存呀! ( Consider
Adobe or oracle, process two images with two
adobes?),所以单态模式在公司编程是非常重要的。有很多场合都要求,对象只能存在一个,多了的话就太耗费资源。(马克-to-win)

class Photoshop {
/* 通过调试发现写成 static Photoshop photoshop或static Photoshop
photoshop=null;
是一样的,开始时都为null,马克-to-win,另外在调试时
可以写上观察Photoshop.photoshop的值,它是独立于任何对象之外的,从程序开始运行的main方法时, 这个值就有了,
只不过为null罢了, 我们可以一直观察
*/
static Photoshop photoshop;//这个值独立于任何对象存在,实例化任何对象之前,这个成员就有可能有值。

static Photoshop getInstanceQixy() {
if (photoshop == null) {
photoshop = new Photoshop();
System.out.println("成功创建");
} else {
System.out.println("已经创建了该类的实例,不能再创建!");
}

return photoshop;
}

void drawImage() {
System.out.println("draw image using photoshop");
}
}

public class Test {
public static void main(String[] args) {
。。。。。。。。。。。。。。。。详情网上找“马克-to-win”,参考他的网站或他的网络空间:java第2章的内容

⑦ java 中的单态是怎么实现的

支持一下一楼!呵呵。。可以!
还有一种方式是用同步实现!代码:
public class Singleton {

private static Singleton instance;

private Singleton(){}//必须是私有。

public static Singleton getInstance() {
if instance == null
{
synchronized(Singleton.class)
{
instance = new Singleton() ;
}
}
return instance;//返回的永远是同一个inst
}
}
其实是一样的,但我还是觉得楼上的比较好,也比较常用。

⑧ java里,什么是单态,什么是多态

单态是一种设计模式,作用是保证在Java应用程序中,一个类Class只有一个实例存在。
多态嘛就是父类实例化不同的子类得到不同的结果,例如老虎和羊的父类是动物,老虎和羊都有一个方法就是吃,当分别用老虎和羊来实例化动物类并调用吃的方法时,一个是吃肉,一个是吃草,这种区别就是多态。

⑨ Java单例模式是什么意思

  1. Java单例模式是确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例的模式;

  2. Java单例模式分三种:懒汉式单例、饿汉式单例、登记式单例。

⑩ 编写一个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单态模式相关的资料

热点内容
安卓手机浏览器怎么扫二维码 浏览:715
通达信成本均线源码 浏览:614
可以下载的解压音频 浏览:564
海贼王怎么换服务器 浏览:318
计算机上的共享文件夹映射 浏览:940
荣耀安装包在文件夹哪里 浏览:195
机票php源码 浏览:231
linux共享mac 浏览:922
中国没有国外的服务器地址 浏览:758
为什么退款服务器连接错误 浏览:556
android短信存储位置 浏览:970
unix网络编程卷4 浏览:808
找靓机app下单什么时候发货 浏览:413
android一个应用两个进程 浏览:803
linux硬盘复制 浏览:808
php图片服务器搭建 浏览:801
下载压缩文件怎么打开 浏览:194
新建文件夹叫什么名字 浏览:567
windows20的开机命令 浏览:335
微信一般在电脑的那个文件夹 浏览:511