步骤
1)单利模式 防止其他类中new,所以private修饰
2)类中创建对象----但是要在静态代码块中创建
3)对外提供一个静态方法来创建对象
优点
写法比较简单,就是在类装载的时候就完成实例化。
避免了线程同 步问题。
缺点
在类装载的时候就完成实例化,没有达到懒加载(Lazy Loading)的效果。如果从始 至终从未使用过这个实例,则会造成内存的浪费。【小公司无所谓,服务器空间足够,同事水平参差,这样看方便理解,一般情况下,可维护性第一,性能第二】
代码实现
(蛇精病啊,学完之后发现一样,花里胡哨的没啥用)
package yuan.com.dp.singleton;
/**
* 测试类
*/
class Test_SingleTon_2 {
public static void main(String[] args) {
SingleTon_2 ton_1 = SingleTon_2.getSingleTon_2();
SingleTon_2 ton_2 = SingleTon_2.getSingleTon_2();
System.out.println(ton_1 == ton_2);
}
}
public class SingleTon_2 {
/**
* 1.单利模式 防止其他类中new,所以private修饰
*/
private SingleTon_2() {
}
/**
* 2.类中创建对象----但是要在静态代码块中创建
* 这里要说一下final,作用是不允许被修改变量的值,能修改值的时机是静态代码块以及有参构造加载时。
*
*/
private static final SingleTon_2 singleTon_2;
static {
singleTon_2 = new SingleTon_2();
}
/**
* 3.对外提供一个静态方法来创建对象
*
* @return singleTon_2实例
*/
public static SingleTon_2 getSingleTon_2() {
return singleTon_2;
}
}
网友评论