导航:首页 > 编程语言 > java单例工厂

java单例工厂

发布时间:2022-07-01 07:01:34

1. 求一小java程序,用到三种设计模式,工厂、单例等等,三种就够

这个程序没法小。另外,单例是工厂的一个特例。严格说,是一个模式。可以尝试,用工厂模式+代理模式+合成模式写一个数据库连接池。工厂模式管理数据库链接,代理模式用来处理connection类的close等需要代理的方法,合成模式用来处理和封装代理对象和原对象的关联管理。可以下载一个数据库连接池的源码。一般的数据库连接池的源码一定至少包含这三种模式。

2. java中工厂实例就是工厂对象对吗,和普通实例普通对象有什么区别

工厂实例就是工厂对象,但是一般来说工厂实例都采取单例模式,也就是说获取工厂实例并不是通过自己new对象的方式而是由工厂来创建实例给我们使用.普通的对象则是我们可以自由new对象的.

3. 求一个完整的单例工厂模式的实现

楼上各位的都不安全,用在服务器上的单例工厂必须考虑线程安全,完整的例子如下:
public class Test {
private static Test instance = null;
private Test()
{}
synchronized public static Test getInstance()
{
if(instance == null)
instance = new Test();
return instance;
}
}

4. JAVA单例模式有哪些

一、懒汉式单例
在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。
public
class
LazySingleton
{
/**
*
私有静态对象,加载时候不做初始化
*/
private
static
LazySingleton
m_intance=null;
/**
*
私有构造方法,避免外部创建实例
*/
private
LazySingleton(){
}
/**
*
静态工厂方法,返回此类的唯一实例.
*
当发现实例没有初始化的时候,才初始化.
*/
synchronized
public
static
LazySingleton
getInstance(){
if(m_intance==null){
m_intance=new
LazySingleton();
}
return
m_intance;
}
}
二、饿汉式单例
在类被加载的时候,唯一实例已经被创建。
public
class
EagerSingleton
{
/**
*
私有的(private)唯一(static
final)实例成员,在类加载的时候就创建好了单例对象
*/
private
static
final
EagerSingleton
m_instance
=
new
EagerSingleton();
/**
*
私有构造方法,避免外部创建实例
*/
private
EagerSingleton()
{
}
/**
*
静态工厂方法,返回此类的唯一实例.
*
@return
EagerSingleton
*/
public
static
EagerSingleton
getInstance()
{
return
m_instance;
}
}
**************************************************************************************
懒汉方式,指全局的单例实例在第一次被使用时构建;
饿汉方式,指全局的单例实例在类装载时构建
**************************************************************************************
三、登记式单例
这个单例实际上维护的是一组单例类的实例,将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。
public
class
RegSingleton
{
/**
*
登记薄,用来存放所有登记的实例
*/
private
static
Map
m_registry
=
new
HashMap();
//在类加载的时候添加一个实例到登记薄
static
{
RegSingleton
x
=
new
RegSingleton();
m_registry.put(x.getClass().getName(),
x);
}
/**
*
受保护的默认构造方法
*/
protected
RegSingleton()
{
}
/**
*
静态工厂方法,返回指定登记对象的唯一实例;
*
对于已登记的直接取出返回,对于还未登记的,先登记,然后取出返回
*
@param
name
*
@return
RegSingleton
*/
public
static
RegSingleton
getInstance(String
name)
{
if
(name
==
null)
{
name
=
"RegSingleton";
}
if
(m_registry.get(name)
==
null)
{
try
{
m_registry.put(name,
(RegSingleton)
Class.forName(name).newInstance());
}
catch
(InstantiationException
e)
{
e.printStackTrace();
}
catch
(IllegalAccessException
e)
{
e.printStackTrace();
}
catch
(ClassNotFoundException
e)
{
e.printStackTrace();
}
}
return
m_registry.get(name);
}
/**
*
一个示意性的商业方法
*
@return
String
*/
public
String
about()
{
return
"Hello,I
am
RegSingleton!";
}
}

5. 求问一个单例+工厂模式的实现(java)

参数是从界面上传递过来的。你是不是吧每个参数都搞成一个类了。如果这样的话,虽然设计做到了单一责任原则,但是这样未免也太死板了。感觉你能不能合并下。就算是动态参数界面也没这么多参数啊。我靠。长见识了。什么项目啊。
即使你现在满足了需求了(需要多大的工作力量啊)。将来需求一变,你就死了。这个项目可能就废了。

6. java笔试题中单例模式,工厂模式简单介绍下。还有饿汉和懒汉分别实现一个

单例模式就是确保一个类只能有一个实例,并且提供一个全局访问点
工厂模式有三个吧,简单工厂,工厂方法以及抽象工厂。简单工厂不能算为一个模式,所以我只说工厂方法和抽象工厂。
工厂方法定义了一个创建对象的接口,但有子类决定要实例化的是哪一个,工厂方法把实例化推迟到子类。
而抽象工厂则是提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。‘

7. java 工厂模式 单例模式

工厂模式分简单工厂、工厂方法、抽象工厂 三类。
很复杂。
看这本电子书: Java与模式(清晰书签版).pdf
下载不到的话加QQ:844576121
传给你

8. java中的工厂模式和单例模式很有用吗我对模板不怎么理解,刚学,看不太懂!咋办

工厂模式基本是每个项目都会用到的,spring的IOc注入其实就是工厂模式的一个应用。单例模式也很常用,但是也清楚你的业务是否真正需要用到单例,单例顾名思义就是在内存保存一个对象,以保证整个系统数据的一致性,一般来说,要用到单例的适合会结合工厂模式同时使用的

9. java常用的几种单例模式(懒汉式,饿汉式

单件模式用途:
单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。
单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时候这也是个不错的选择。但实际上,一个网站是并发的,并且有可能是存在大量并发操作的。如果我们对每次写入都创建一个数据库连接,那么很容易的系统会出现瓶颈,系统的精力将会很多的放在维护链接上而非直接查询操作上。这显然是不可取的。
如果我们能够保证系统中自始至终只有唯一一个数据库连接对象,显然我们会节省很多内存开销和cpu利用率。这就是单件模式的用途。当然单件模式不仅仅只用于这样的情况。在《设计模式:可复用面向对象软件的基础》一书中对单件模式的适用性有如下描述:
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
下面对单件模式的懒汉式与饿汉式进行简单介绍:
1、饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建。
2、懒汉式:当程序第一次访问单件模式实例时才进行创建。
如何选择:如果单件模式实例在系统中经常会被用到,饿汉式是一个不错的选择。

10. JAVA单例模式的几种实现方法

JAVA
单例模式的几种实现方法
1.饿汉式单例类
package
pattern.singleton;
//
饿汉式单例类
.
在类初始化时,已经自行实例化
public
class
Singleton1
{
//
私有的默认构造子
private
Singleton1()
{}
//
已经自行实例化
private
static
final
Singleton1
single
=
new
Singleton1();
//
静态工厂方法
public
static
Singleton1
getInstance()
{
return
single;
}
}
2.
懒汉式单例类
package
pattern.singleton;
//
懒汉式单例类
.
在第一次调用的时候实例化
public
class
Singleton2
{
//
私有的默认构造子
private
Singleton2()
{}
//
注意,这里没有
final
private
static
Singleton2
single;
//
只实例化一次
static
{
single
=
new
Singleton2();
}
//
静态工厂方法
public
synchronized
static
Singleton2
getInstance()
{
if
(single
==
null
)
{
single
=
new
Singleton2();
}
return
single;
}
}
在上面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境。有些设计师在这里建议使用所谓的
"
双重检查成例
".
必须指出的是,
"
双重检查成例
"
不可以在
Java
语言中使用。不十分熟悉的读者,可以看看后面给出的小节。

样,由于构造子是私有的,因此,此类不能被继承。饿汉式单例类在自己被加载时就将自己实例化。即便加载器是静态的,在饿汉
式单例类被加载时仍会将自己实例化。单从资源利用效率角度来讲,这个比懒汉式单例类稍差些。从速度和反应时间角度来讲,

比懒汉式单例类稍好些。然而,懒汉式单例类在实例化时,必须处
理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源
初始化很有可能耗费时间。这意味着出现多线程同时首次引用此类的机率变得较大。
饿汉式单例类可以在
Java
语言内实现,
但不易在
C++
内实现,因为静态初始化在
C++
里没有固定的顺序,因而静态的
m_instance
变量的初始化与类的加载顺序没有保证,可能会出问题。这就是为什么
GoF
在提出单例类的概念时,举的例子是懒
汉式的。他们的书影响之大,以致
Java
语言中单例类的例子也大多是懒汉式的。实际上,本书认为饿汉式单例类更符合
Java

言本身的特点。
3.
登记式单例类
.
package
pattern.singleton;

import
java.util.HashMap;
import
java.util.Map;
//
登记式单例类
.
//
类似
Spring
里面的方法,将类名注册,下次从里面直接获取。
public
class
Singleton3
{
private
static
Map<String,Singleton3>
map
=
new
HashMap<String,Singleton3>();
static
{
Singleton3
single
=
new
Singleton3();
map.put(single.getClass().getName(),
single);
}
//
保护的默认构造子
protected
Singleton3(){}
//
静态工厂方法
,
返还此类惟一的实例
public
static
Singleton3
getInstance(String
name)
{
if
(name
==
null
)
{
name
=
Singleton3.
class
.getName();
System.out.println("name
==
null"+"--->name="+name);
}
if
(map.get(name)
==
null
)
{
try
{
map.put(name,
(Singleton3)
Class.forName(name).newInstance());
}
catch
(InstantiationException
e)
{
e.printStackTrace();
}
catch
(IllegalAccessException
e)
{
e.printStackTrace();
}
catch
(ClassNotFoundException
e)
{
e.printStackTrace();
}
}
return
map.get(name);
}
//
一个示意性的商业方法
public
String
about()
{
return
"Hello,
I
am
RegSingleton.";
}
public
static
void
main(String[]
args)
{
Singleton3
single3
=
Singleton3.getInstance(
null
);
System.out.println(single3.about());
}
}

阅读全文

与java单例工厂相关的资料

热点内容
饥荒联机版如何直连服务器 浏览:120
妈妈的朋友崇石演过什么电影 浏览:868
qq邮箱如何查看服务器的地址 浏览:800
穿越到各大电影世界 浏览:584
青海集群服务器云空间 浏览:924
韩剧不能看有什么app可以代替 浏览:585
用气球和黏土做解压玩具 浏览:187
天地23tⅹt 浏览:784
恐怖电影观看免费推荐 浏览:4
共享电影 浏览:666
杰友科技是什么app 浏览:581
她明天去电影院的英文怎么写 浏览:548
甄嬛传小说百度云 浏览:455
国外短发女游泳池发现尸体的恐怖电影 浏览:35
androidswitch背景色 浏览:310
androidusbapk 浏览:696
特别好玩的解压神器你们想玩吗 浏览:181
加密货币盗窃安全吗 浏览:605
吊死荡秋千的电影叫什么 浏览:830
异常预测算法 浏览:981