目录
Javabean类(记录短信验证码)
public class CheckCode {
// 手机号码
private String phone ;
// 验证码
private String checkCode ;
public CheckCode() {
}
public CheckCode(String phone, String checkCode) {
this.phone = phone;
this.checkCode = checkCode;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getCheckCode() {
return checkCode;
}
public void setCheckCode(String checkCode) {
this.checkCode = checkCode;
}
}
模板方法(抽象类将发送验证码的重复代码提取出来)
public abstract class SendMsg {
// 存储短信验证码的集合
public ArrayList<CheckCode> list = new ArrayList<>();
// 定义发送短信验证码时可选的数字字符
public char[] chs = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
// 发送短信验证码的方法
public final void sendMsg(String phone) {
// 补全代码
Random r = new Random();
String s = "";
for (int i = 0; i < 4; i++) {
s += chs[r.nextInt(10)];
}
CheckCode c = new CheckCode(phone,s);
list.add(c);
print(phone, s);
}
public abstract void print(String phone, String s);
}
继承模板类,将其中的抽象方法重写
public class AliyunSendMsg extends SendMsg {
@Override
public void print(String phone, String s) {
System.out.println("访问阿里云平台的" + phone + "发送的短信验证码是:" + s);
}
}
public class TencentSendMsg extends SendMsg {
@Override
public void print(String phone, String s) {
System.out.println("访问腾讯云平台的" + phone + "发送的短信验证码是:" + s);
}
}
工厂类对平台进行解耦合 实现随机发送验证码
之后的更改只在工厂类中进行修改
public class SendMsgFactory {
public static SendMsg getSendMsg() {
Random r = new Random();
int rs = r.nextInt(2) + 1;
if (rs == 1 ){
return new TencentSendMsg();
}else {
return new AliyunSendMsg();
}
}
}
测试类
public static void main(String[] args) {
// 请输入手机号码
Scanner sc = new Scanner(System.in);
System.out.print("请您输入登录的手机号码:");
String phone = sc.nextLine();
// 调用发送短信类的方法发送短信验证码 (如果需要使用腾讯云发短信,创建对象调用sendMsg方法即可)
// TencentSendMsg TencentSendMsg = new TencentSendMsg() ;
// TencentSendMsg.sendMsg(phone);
SendMsg s = SendMsgFactory.getSendMsg();
s.sendMsg(phone);
}
}