- /**
- * 单例模式指我们的一个类仅有一个实例,并提供一个访问它的全局访问点。”
- *单利模式创建的步骤:1,私有化构造方法 2,创建一个实例对象的引用
- * 3,创建一个外部可以访问获取引用的方法。
- *
- * @author Alan
- *
- */
- public class Single {
- public int x;
- public int y;
- /**
- * 饿汉式:创建引用时同时创建对象,外部访问时可以直接获得实力对象
- */
- // 私有化构造方法
- private Single() {
- }
- // 创建一个实例对象的引用,并创建对象
- static Single s1 = new Single();
- // 创建一个外部可以访问获取引用的方法。
- public static Single instance1() {
- return s1;
- }
- /**
- * 懒汉式:创建引用的时候不创建对象,等外部访问的时候再创建对象。
- */
- // 创建一个实例对象的引用,不创建对象
- static Single s2 = null;
- // 创建一个外部可以访问获取引用的方法。
- public static Single instance2() {
- if (s2 == null) {
- // 此时才创建对象
- s2 = new Single();
- }
- return s2;
- }
- /**
- * 在以后的多线程知识中可知:懒汉式是线程不安全的,当有两个线程运行到s2 = new Single();
- * 有可能都会创建实例对象。所以需要同步操作,此时懒汉式应该这样写:
- */
- // 创建一个实例对象的引用,不创建对象
- static Single s3 = null;
- // 创建一个外部可以访问获取引用的方法。
- public static Single instance3() {
- // 此时才创建对象
- if (s3 == null) {
- // 使用同步
- synchronized (Single.class) {
- if (s3 == null) {
- s3 = new Single();
- }
- }
- }
- return s3;
- }
-
- //建议使用饿汉式,不毛线。
- }
复制代码
单例模式有很多应用。比如说:我们上课,可能有七八十个学生,数学老师只要一个就可以了,这时候数学老师就可以使用单例模式。
写博客le,大家一起加油!!早日进黑马!!! |
|