单例类学习笔记

最近有同学问我下图中为什么程序在类里声明了一个同类名的静态对象。当时也没搞懂为什么,最近看了李刚的java讲义,才知道这个叫“单例类”,保证类只能创建一个实例。

为什么有时候只能建立一个实例呢?在上面的一小段程序中,是为了保证服务器接收端只有一个端口在接收客户端发来的信息,这个时候系统为这些类建立多个对象就没有多大意义。为了避免其他类自由创建该类的实例,我们把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。

  根据良好的封装原则:一旦把该类的构造器隐藏起来,就需要提供一个静态public方法作为该类的访问点,用于创建该类的对象,使用static修饰的原因是调用该方法之前还没有创建对象,只有类才能调用。静态方法只能访问静态变量,所以该类需要一个静态成员变量保存曾经创建的对象。下面是书上的一段例子程序:

class Singleton
{
 private static Singleton single;
 private Singleton get()

{
  if(single==null)
{
 single=new Singleton();
}
return single;
}
public class SingletonTest
{
public static void main(String args[])
{
Singleton s1=new Singleton();
Singleton s2=new Singleton();
System.out.println(s1==s2);//输出相等
}
}


仅作学习,欢迎探讨

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值