1、饿汉模式 初始化时就进行赋值(饿汉怕饿,一定要一开始就有)
private static SendMessage hungryMode = new SendMessageImpl();
public Boolean sendMessageHungryMode() {
return hungryMode.send();
}
2、懒汉模式 使用时再赋值(就一个字 懒,用时才赋值,一直不用一直不赋值)
private static volatile SendMessage lazyMode;
public Boolean sendMessageLazyMode() {
return getSendMessageImpl().send();
}
private static SendMessage getSendMessageImpl() {
if (lazyMode == null) {
synchronized (SendUtil.class) {
if (lazyMode == null) {
lazyMode = new SendMessageImpl();
}
}
}
return lazyMode;
}
3、枚举方式 目前最简单且能防住反射修改值的安全单例方式
枚举类 定义任一枚举,设置单例赋值和单例获取方法
public enum SimpleEnum {
INSTANCE;
SimpleEnum() {
enumWay = new SendMessageImpl();
}
private SendMessage enumWay;
public SendMessage getEnumWay() {
return enumWay;
}
}
调用示例
/**
* 发送信息
*
* @return 发送是否成功
*/
public Boolean sendMessageEnumWay() {
return SimpleEnum.INSTANCE.getEnumWay().send();
}