下面是singleton pattern的原意
package pattern.creational.singleton.demo1;
/**
* <p>title: the singleton pattern</p>
*
* <p>description: 建议使用这个方法
* another approach, suggested by design patterns, is to create
* singletons using a static method to issue and keep track of instances. to
* prevent instantiating the class more than once, we make the constructor
* private so an instance can only be created from within the static method
* of the class.
*
* other consequences of the singleton pattern
* 1. it can be difficult to subclass a singleton, since this can only work
* if the base singleton class has not yet been instantiated.
* 2. you can easily change a singleton to allow a small number of instances
* where this is allowable and meaningful.
*
* </p>
*
* <p>copyright: copyright (c) 2005</p>
*
* <p>company: </p>
*
* @author lin.xiang.xiang
* @version 1.0
*/
public class isspooler
{
//this is a prototype for a printer-spooler class
//such that only one instance can ever exist
static boolean instance_flag = false; //true if 1 instance
//the constructor is privatized-
//but need not have any content
private isspooler() {}
//static instance method returns one instance or null
static public isspooler instance() {
if (!instance_flag) {
instance_flag = true;
return new isspooler(); //only callable from within
}
else
return null; //return no further instances
}
//-------------------------------------------
public void finalize() {
instance_flag = false;
}
public static void main(string[] args) {
}
}
只要稍加修改,我们可控制只创建n个实例,n由我们来定.
下面给出代码示范
package pattern.creational.singleton.demo2;
/**
* <p>title: singleton pattern 的变形</p>
*
* <p>description: </p>
*
* <p>copyright: copyright (c) 2005</p>
*
* <p>company: </p>
*
* @author lin.xiang.xiang
* @version 1.0
*/
public class n_instance {
final static int maxinstance = 5; //最多只能创建5个实例
static int instancecount = 0; //开始无实例
private n_instance() {}
static public n_instance getinstance() {
if (instancecount < maxinstance) {
instancecount++;
return new n_instance(); //返回一个实例
}
else
return null; //返回空
}
public void finalize() {
instancecount--;
}
}
欢迎交流,指点
qq:47004223
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器