一、应用背景
当你需要一个类只能创建一个对象的时候,例如数据库连接时,服务端只需要一个连接对象便能处理很多查询工作,如果此时一个连接一个查询势必会造成内存的浪费,造成服务器的卡顿,所以此时就出现了一个需求,怎样让一个类只创建一个对象呢
二、java中实现此模式的特性
首先实现一个类只能创建一个对象,利用到Java里面的static关键字,将对象封装成一个属性,这样就实现了全局只能用一个对象,但有个问题,创建对象的时候会调用一次构造函数,我们只需要创建一个对象,理论上只需要调用一次即可,所以将构造函数私有,利用公有的静态方法返回给我们对象
三、代码及原理部分
public class MyRequest {
//创建私有构造方法
private MyRequest(){}
//创建私有静态对象
private static MyRequest request;
//创建公有的方法以获取对象
public static MyRequest getRequest(){
//懒汉式加载又称延迟加载机制
//只有对象调用才创建
if (request == null){
request = new MyRequest();
}
return request;
}
}
这边提示一下,kotlin已经将这个单例模式封装成一个关键字了,所以有时候会java和kotlin的混合开发以提高开发效率
object Myrequest{
//实现与上面一样的效果
}