您的位置:首页 > 其它

设计模式(1):单例设计模式

2015-07-25 15:04 274 查看
单例设计模式:



定义:

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





饿汉式:



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);

	}
	// 其他方法
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: