关键字static ,单例模式


关键字static:

使用范围:在Java类中,可用static修饰属性、方法、代码块、内部类
被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
修饰的成员,被所有对象所共享访问

权限允许时,可不创建对象,直接被类调用

在static方法内部只能访问类的static属性,不能访问类的非static属性。

因为不需要实例就可以访问static方法,因此static方法内部不能有this和super。
重载的方法需要同时为static的或者非static的。


单例 (Singleton)设计模式:
设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。

设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。        
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,

并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,

我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,

但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法

以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,

所以,指向类内部产生的该类对象的变量也必须定义成静态的。


单例(Singleton)设计模式-饿汉式与懒汉式:

// 饿汉式单例, 声明引用同时创建对象  
        class Singleton1 { // 单例 : 在程序运行期间只允许有一个对象  
            // 1) 私有化构造器, 防止外部随意创建对象  
            private Singleton1() {}  
          
            // 2) 在类内部声明私有的静态引用变量, 并创建唯一的对象, 赋值于这个引用  
            private static Singleton1 only = new Singleton1();  
          
            // 3) 提供公共静态方法用以获取类中唯一的对象  
            public static Singleton1 getInstance() {  
                return only;  
            }  
        }  
        // 懒汉式, 第一次获取对象时才创建对象  
        class Singleton2 {  
          
            // 1) 私有化构造器  
            private Singleton2() {}  
          
            // 2) 在类内部声明私有的静态引用变量  
            private static Singleton2 only;  
          
            // 3) 提供公共的静态方法用以获取类中的唯一的对象  
            public static Singleton2 getInstance() {  
                if (only == null) {  
                    only = new Singleton2();  
                }  
                return only;  
            }  
        }     
        class Singleton1Test {  
          
            public static void main(String[] args) {  
                //Singleton1 s1 = new Singleton1(); 构造器私有化后就不可以创建对象  
                //Singleton1 s2 = new Singleton1();  
                Singleton1 s1 = Singleton1.getInstance(); // 通过方法获取对象   
                Singleton1 s2 = Singleton1.getInstance();  
                System.out.println(s1 == s2);  
            }  
        }         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值