java单态学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java单态学习相关的知识,希望对你有一定的参考价值。

所谓单态,就是调用类模版创建的对象是同一个对象.好比一台电视机(单态对象).有两个遥控器(我们创建的对象引用). 但操作的却是同一台电视机.servlet类就是一个典型单态.

下面说明一下如何创建一个单态类:

首先将类的构造器私有化例如class Test{ private Test(){System.out.println("开始初始化");}//私有化构造器}

其次就是该类包含一个成员变量,此成员变量的类型和类本身一致:在第一步基础上举例如下:class a{ private Test(){System.out.println("开始初始化");}//私有化构造器

private static Test instance;//定义一个Test类型的成员变量,

}

其次就是创建一个方法来返回一个Test对象.这里要考虑的是用new Test()方法返回的话返回的对象当然是不同对象了.例如这样:public static Test getNewTest(){return new Test();},想到上面我们已经定义了一个静态变量.如果给它一个对象.我们再来访问这个变量.因为这个变量是静态的,那么不就是访问的同一个对象了么? 于是可以这么做public static Test getInstance(){

if(instance==nuul)

    instance =new Test();

return instance;

}

因为这个变量是静态的,所以对于调用者来说都是同一个.而这个静态变量指向的又是单一的一个对象.当我们创建的该类引用变量时,实质上就是得到的这个静态变量的引用.自然操作的对象就是同一个了.

下面贴上代码.从代码中更容易理解.

class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
		TV t1=TV.getInstance();
		t1.setName("TCL");
		System.out.println("未创建t2前.电视机的牌子是"+t1.getName());
	TV t2=TV.getInstance();
		t2.setName("华夏");
	    System.out.println("创建t2后,t1电视机的名字是"+t1.getName()); 
		System.out.println("t2电视机的名字"+t2.getName());
		if(t1==t2)
	System.out.println("t1和t2是同一台电视机");
	}
}
class TV{
    private String name;
    private static TV instance;
    private TV(){
        System.out.println("正在执行构造器...,,");
        
    }
    
    
    public static TV getInstance(){
        
        if(instance==null)
        instance=new TV();
        return instance;
    }
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return this.name;
    }
}

代码简单易懂.这也使自己的一个学习总结吧..

以上是关于java单态学习的主要内容,如果未能解决你的问题,请参考以下文章

java SpringRetry学习的代码片段

Listener实现单态登陆

Spring 实现两种设计模式:工厂模式和单态模式

单态模式其他模式

单态(单例)设计模式

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段