谈模式(Singleton Pattern)的变形

浏览:51日期:2023-03-10
内容: 下面是Singleton Pattern的原意package Pattern.Creational.Singleton.Demo1;/** *

Title: THE SINGLETON PATTERN

* *

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. * *

* *

Copyright: Copyright (c) 2005

* *

Company:

* * @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;/** *

Title: Singleton Pattern 的变形

* *

Description:

* *

Copyright: Copyright (c) 2005

* *

Company:

* * @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, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
相关文章: