Java学习笔记(疯狂Java讲义第三版)——单例类

单例类:一个类,如果只能创建一个对象。那么这个类就是单例类,即只能创建一个对象的类。
通常情况下,一但定义好了一个类,如果系统允许,那么就可以通过该类创造无数多该类类型的对象。所以,单例类需要程序员采用某种手段使得该类只能创建一个对象。

如何才能创建单例类呢?
1.首先将该类中的构造器用private修饰符进行修饰。
当我们创建对象的时候,主要就是通过构造器来创建对象的。所以如果构造器的修饰符是public的话,那么我们就可以在外界通过构造器创建任意多的对象,所以第一步需要将构造器通过private隐藏起来,使得外界无法访问到该类的构造器。

2.定义一个static修饰的类方法,该方法的作用是可以在外界创建对象,所以方法返回值类型为该类的类型。
当构造器用private修饰符修饰之后,就无法在外界通过构造器来创建对象了,没有对象普通方法也就无法使用了。所以必须提供一个可以创建该类对象的类方法,使得可以在外界创建对象。
该类方法如何来创建对象呢?当然是在该类方法里通过构造器来创建了,因为同类中的各个成员之间的调用是不受访问权限修饰符控制的。
接下来就是解决怎样做,才能做到只能创建一个对象的问题了,因为此时还是可以通过该类方法来间接的创建出无数多个对象的。

3.在类的内部定义一个与该类类型一样的引用变量,同时用static来修饰。最好用private修饰符以做到良好的封装。
在类的内部定义一个同该类类型一样的引用变量的目的是用来存储通过,该类提供的用来创建该类对象的类方法所创建出来的对象用的。
注意该引用类型的变量也要用static修饰,因为我们用来创建对象的是类方法,是用static修饰的,Java语法规定static修饰的成员不能访问没有static修饰的成员。该引用变量的数据类型为该类的类型。
特别强调,定义好的类本身就是一个数据类型,同int、float一样都是用来定义变量的数据类型,所以在一个类的内部也可以定义该类类型的引用变量。

看下列代码:
public class A
{
private static A a = null;//定义该类类型的引用变量,用来存储创建出来的该类对象
private A(){}//将构造器用private修饰,以免被外界访问到
public static A createSingleInstance(){//定义一个用来创建该类对象的类方法
if (a == null){//判断是否已存在该类的对象,因为引用变量如果为null的表示还没有创建该类对象
this.a = new A();//如果么有就创建该类对象
}
return a;//最后返回该类对象的引用。
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值