现实生活中,我们常常会发现有些事物是唯一的。例如某个商店有且只有一个老板。
在Java中,我们会创建商店类和老板类,并在商店中实例化老板实例。
/*** 商店*/publicclassShop { publicstaticvoidmain(String[] args) { Mastermaster1=newMaster(); Mastermaster2=newMaster(); } }
问题是,一个商店类里面还是可以实例化多个老板,这不符合要求。
单例模式就是为了解决这个问题,保证有且只有一个实例存在。
首先在老板类中创建一个唯一的私有静态实例(在单例类中先实例化自己),并把构造方法变为私有,这样别人无法实例化这个类,最后再写一个公开静态方法返回实例即可,具体看代码:
/*** 老板*/publicclassMaster { /*** 创建一个静态私有老板实例,这就是唯一实例*/privatestaticMastermaster=newMaster(); /*** 私有化构造函数使得外部无法实例化老板类*/privateMaster() { } /*** 访问方法使得外部可以访问那个唯一的实例*/publicstaticMastergetInstance() { returnmaster; } }
然后就可以使用getInstance
方法进行访问了:
/*** 商店*/publicclassShop { publicstaticvoidmain(String[] args) { Masterm=Master.getInstance(); } }
通过这种方式,我们调用的老板实例永远只有一个,也就是Master
类中的那个唯一的实例。