单例设计模式:

 

定义:

确保一个类仅仅有一个实例,而且自行实例化。并向整个系统提供这个实例。

 

 

饿汉式:

 

class Single {
	private static final Single s = new Single();

	// 限制产生多个对象
	private Single() {
	}

	// 通过该方法获得实例对象
	public Single getInstance() {
		return s;
	}

	// 类中其它方法尽量使用static
	public static void say() {
		System.out.println("--> only one");
	}
}


 

通过定义一个私有訪问权限的构造函数,避免被其它类new出来一个对象。

 

懒汉式:

考虑到线程同步的问题。

 

/*懒汉式
 * 延迟载入
 * */
class Single1
{
    private static Single1 s = null;
    private Single1() {}

    public static Single1 getInstance()
    {
        if ( s == null)
        {
            synchronized (Single1.class)
            {
                if (s == null)
                    s = new Single1();
            }
        }
        return s;
    }
}


 

单例模式的扩展:产生固定数量的对象。

 

class Single {
	// 固定数量
	private static int num = 5;
	private static ArrayList<String> nameList = new ArrayList<String>();
	private static ArrayList<Single> singleList = new ArrayList<Single>();
	private static int currentNum = 0;
	static {
		for (int i = 0; i < num; i++) {
			singleList.add(new Single("num + " + (i + 1)));
		}
	}

	private Single(String name) {
		nameList.add(name);
	}

	public static Single getInstance() {
		Random random = new Random(num);
		currentNum = random.nextInt();
		return singleList.get(currentNum);

	}
	// 其它方法
}


 

 

 

 

 

posted on 2017-07-20 19:48  lxjshuju  阅读(110)  评论(0编辑  收藏  举报