java 单例类

·单例类

    单实例类,就是这个类只能创建一个对象,保证了对象实例的唯一性。

 

例子:单实例类


 

class Singleton 
{ 
    private static Singleton instance;  //使用static修饰,因为它要在该类的静态方法中被访问,作用                     //是一个引用变量指向对象。  
     
    private Singleton(){};  //提供一个私有的构造器,使用方法来控制它创建对象的个数。  
 
    //方法必须是public的和static的,因为方法要公开被下面的类调用并且下面的s1引用变量获取方法的方式是        //通过类.方法来实现的。因为不能创建对象,所以只能用类。这样就约束了只能创建一个对象。  
    public static Singleton getInstance() 
    { 
        if (instance == null) 
        { 
            instance = new Singleton(); 
        } 
 
        return instance; 
    } 
} 
 
 
public class SingletonTest 
{ 
    public static void main(String[] args) 
    { 
        Singleton s1 = Singleton.getInstance(); 
        Singleton s2 = Singleton.getInstance(); 
        System.out.println(s1 == s2);   //结果为true,这里可以看出确实是同一个对象 "=="比较两个对象的内存地址是否相同。
    } 
} 

//饿汉式
//class  single1
//{
//        private static single1 s=null;
//        private single1() {}
//        public static single1 getinstance()
//        {
//                if(s==null)
//                        s=new single();
//                return s;
//        }
//}
//懒汉式
//原则  定义单例时原则上用饿汉式
class singledemo
{
        public static void main(String [] args)
        {
                System.out.println("Hello world");
        }
}

1。为了避免其他程序多建立该类对象。先禁止其他程序建立该类对象
2。还未了让其他程序反问改类对象。只好在本类中。自定义一个对象
3。为了方便其他程序对自定义对象的访问。可以对外提供一些访问方式

为了避免其他程序多建立该类对象。先禁止其他程序建立该类对象。
如果对象中构造函数可以传入参数。建立对象。就会改变对象初始化数据。而该对象只提供功能。避免其他调用着创建对象,而改动初始数据。所以封装对象

 

1、单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。
2、单例模式主要有3个特点:
(1)、单例类确保自己只有一个实例。
(2)、单例类必须自己创建自己的实例。
(3)、单例类必须为其他对象提供唯一的实例。
3、对于懒汉模式,我们可以这样理解:该单例类非常懒,只有在自身需要的时候才会行动,从来不知道及早做好准备。它在需要对象的时候,才判断是否已有对象,如果没有就立即创建一个对象,然后返回,如果已有对象就不再创建,立即返回。
4、对于饿汉模式,我们可以这样理解:该单例类非常饿,迫切需要吃东西,所以它在类加载的时候就立即创建对象。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。