单例模式

单例模式(Singleton):一个类只会生成唯一的一个对象

    出发点:一个类在生成的时候,构造方法肯定会被调用,所以从构造方法入手。构造方法私有化,限制用户不能在类外new对象,那么类外一个对象都生成不出?!因为私有的(private)可以在类的内部使用,所以可以在类的内部new一个对象,然后提供一个public方法将生成对象返回,所以在类的外部用提供的方法接收对象。

    第二个问题:实例方法,要有对象才去调用,而类外生成不了对象,所以排除实例方法,用静态(static)方法,通过类的名字调用。

    第三个问题:不能调用一次方法,就new出一个对象,所以不能将生成对象的语句放在方法里面。应该先把对象生成好,在方法里面返回(return)这个对象,类外调用这个方法。同时,静态方法只能访问静态的,所以对象的引用要是静态的。


Java代码:

package come.teat;


public class SingletonTest {


/**
* @单例模式
*/
public static void main(String[] args) {


Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();

//如果singleton1和singleton2是同一个对象的话,它们的地址是一样的
System.out.println(singleton1 == singleton2);   //输出true,证明是同一对象;反之,则不是
}


}


//单例模式的第一种实现方式
public class Singleton {

private Singleton() {

}
    
private static Singleton singleton = new Singleton(); 

public static Singleton getInstance() {
return singleton;
}
}

//单例模式的第二种实现方式
public class Singleton {

private Singleton() {

}
    
private static Singleton singleton; 

public static Singleton getInstance() {
//singleton如果为空,则说明之前没有new过对象,否则直接返回
if(singleton == null) {
singleton = new Singleton();
}
return singleton;

}
}






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值