没有引入新的OO原则
OO模式:
单件模式:确保一个类只有一个示例,并提供全局访问点。
我的理解:
这个模式相对比较简单,主要的实现方式就是把构造器设置为私有的,然后再利用一个静态的getInstance方法来产生实例。
简单的实现单件模式的代码:
单件模式相比于前面几个所学的模式的话都要简单,但是这里也会出现有一个问题,就是多线程的问题,当碰到多线程时上面的代码就有可能产生两个instance。
对应于解决多线程产生的问题也会有三种方法:
1) 在getInstance方法前面加上Synchronized限定词:
该方法的缺点就是用上线程同步后,会使整个程序的效率下降N多,而且其实我们需要同步的仅仅只是new这个操作。
2) 急切实例化,即在声明时就把类实例化掉,那么接下来就不会产生出现多个实例的情况了
该方法的缺点就是跟使用静态变量差不多,比较占用系统资源,因为你在没有使用之时就已经把对象创建好了,可能在该程序中一直要到最后才会用到这个对象,但是你一开始就创建了,就会占用不必要的资源了。
3) 双重锁加锁
这个的缺点的话就是在java5以前volatile这个关键词会导致双重锁检查的失败。