单例模式探索

来源:互联网 发布:在淘宝网购物流程 编辑:程序博客网 时间:2024/06/05 00:25

参考:《设计模式之禅》

定义:确保某一个类只有一个实例(因为使用private的构造方法),而且自行实例化并向整个系统提供这个实例。

通用代码模块:

public class Singleton{private static final Singleton singleton = new Singleton();private Singleton(){}public static Singleton getSingleton(){return singleton();}//其他方法尽量是static方法public static void doSomething(){}}

扩展(上限的多例模式 ):

以皇帝不能为两个为例


public class Emperor {//定义最多有多少皇帝private static int maxNumOfEmperor = 2;private static ArrayList<String> nameList = new ArrayList<String>();private static ArrayList<Emperor> emperorList = new ArrayList<Emperor>();//每个皇帝的序号private static int countNumOfEmperor = 0;//产生所有对象static{for(int i=0 ; i<maxNumOfEmperor ; i++){emperorList.add(new Emperor("皇" + (i+1) + "帝"));}}private Emperor(){}//只能建立一个对象,privateprivate Emperor(String name){nameList.add(name);}private static Emperor getInstance(){Random r = new Random();countNumOfEmperor = r.nextInt(maxNumOfEmperor);return emperorList.get(countNumOfEmperor);}//公有方法public static void say(){System.out.println(nameList.get(countNumOfEmperor));}}

单例模式的优点:1.单例模式在内存中只有一个实例,减少内存开支,一个对象需要频繁的创建和销毁,且创建或销毁无法优化的时候,单例模式优势明显。

2.减少系统性能开销。

3.避免对资源的多重占用。

4.设置系统的全局访问点。

缺点:1.没有借口访问困难。

2.测试困难。

3.与单一职责原则冲突。



0 0
原创粉丝点击