简单的说单例就是当前运行态类的实例只有一个,比如说登录QQ,那么在这个设备中的所有相关的用户类的实例就只是自己一个。简单的代码实现
- public class ClassA
- {
- private static ClassA classA=null;
- //将类A的构造方法私有化,那么在运行的时候ClassA就不能实例化了那怎么办呢?
- private ClassA()
- {
- //dosomething
- }
- /***
- * 如果classA的实例为空,就new一个重新创建,反之就直接赋值
- * 由于其他类要访问,所以必须是静态的方法
- * @return classA 的实例
- */
- public static ClassA getA()
- {
- if(classA!=null)
- {
- new ClassA();
- }
- return classA;
- }
- }
- 其他类调用的时候直接用类名所有就避免了类的重新初始化
- public class ClassB
- {
- public static void main(String [] args)
- {
- // 如果ClassA在其他地方已经实例化过的话,a接受的ClassA的实例一定不是新的的实例。
- ClassA a = ClassA.getA();
- a.toString();
- }
- }
- 方法就说很实用。等待进一步学习
复制代码
Q1:优势在哪里?
Q2:什么时候用? |
|