关于java:一个登录案例学会委派设计模式

8次阅读

共计 1941 个字符,预计需要花费 5 分钟才能阅读完成。

作者:叁滴水 \
博客:https://blog.csdn.net/qq_3028…

前言

委派模式不属于 23 种设计模式,然而 spring 中呈现了委派模式的影子, 委派模式从字面上即可大略想到这个模式的含意,即想做有些事,然而我本人不想做,那么我委派给你做。

老板让经理去做一个我的项目,经理必定不会亲自去做,会正当的安顿给本人的手上来实现这个我的项目。这时委派模式的含意就比较清楚了。

网上太多老板安顿经理做事的例子,在此!

一、登录案例

适配器模式也是通过登录进行示例的。然而设计模式总是多个联合应用的,单单应用适配器模式会显得有一点点的瑕疵。

比方,如果每种形式登录胜利之后要设置登录的日志信息,并且每种登录形式的 token 生成策略如果不一样的话,单个的适配器模式是无奈使得代码更加好看。

引入委派模式,能够认为是以后对象晓得要做某些事,然而却不会具体的实现,好比经理晓得每天的工作,然而具体实现的时候要交给本人的小弟去做。

代码如下(抽象类):

public abstract class AbstractLoginService  {public void login(UserInfo user){System.out.println("账号密码登录");
        UserInfo userInfo = userMapper.getUserInfo(user.getUserName(),user.getPassword());
        this.getToken();
        this.sendLog();
         // 等等各种操作此处省略
    }
    // 设置登录日志
    public abstract void sendLog();
    // 获取 token
    public abstract void getToken();}

创立抽象类,创立形象办法 sendLoggetToken, 子类继承抽象类,实现形象办法。

代码如下(短信登录示例):

public class SmsLoginService extends AbstractLoginService {
    // 手机号
    // 验证码
    @Override
    public void login(UserInfo user){System.out.println("短信登录");
        // 验证验证码是否正确
        this.checkCode(user.getMobile(),user.getCode());
        UserInfo userInfo = null;//this.userMapper.getUserInfo(user.getMobile());
        super.login(userInfo);
    }
    @Override
    public void sendLog() {System.out.println("这里设置短信登录日志信息");
    }
    @Override
    public void getToken() {System.out.println("获取短信登录 token");
    }
    private void checkCode(String mobile, String code) {System.out.println("验证验证码");
    }
}

子类实现形象办法后,能够实现不同的登录形式的发送登录日志和获取 token 的实现各不相同。

总结

委派模式即一件事件(或一个申请)对象自身不晓得怎么解决,对象把申请交给其它对象来做。

在 spring 源码中能够看到更多委派模式的代码示例,

例如:

  1. AbstractApplicationContext类中 obtainFreshBeanFactory 办法中的 refreshBeanFactory 办法,和我这个例子相似,主类不关注或者说不晓得如何实现 refreshBeanFactory 办法,交给子类实现,达到了委派的成果。
  2. DispatcherServlet这个 springMVC 的前端控制器或者说这就是一个 转发器。所有的信息都会通过这个类,然而这个类缺只是转发,具体实现委派给了HandlerMapping、视图解析器等等。达到了委派的成果。

另外,想学习更多的策略模式,能够关注公众号 Java 技术栈,在后盾回复:设计模式,能够获取我整顿的设计模式教程,都是实战干货。

本文来自作者「叁滴水」投稿,谢谢分享,也欢送喜好技术分享的各位技术敌人向「Java 技术栈」投稿,让更多人看到,投稿形式:关注公众号「Java 技术栈」在后盾回复:投稿。

近期热文举荐:

1.600+ 道 Java 面试题及答案整顿(2021 最新版)

2. 终于靠开源我的项目弄到 IntelliJ IDEA 激活码了,真香!

3. 阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式公布,全新颠覆性版本!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0