使用模板方法和简单工厂设计模式实现验证码发送

目录

Javabean类(记录短信验证码)

 模板方法(抽象类将发送验证码的重复代码提取出来)

 继承模板类,将其中的抽象方法重写

工厂类对平台进行解耦合 实现随机发送验证码

测试类 


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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值