适配器模式(Adapter)
Spring AOP模块对BeforeAdvice,AfterAdvice,ThrowsAdvice三种通知类型的支持实际上是借助设配器模式来实现的,这样的好处是使得框架允许用户向框架中加入自己想要支持的任何一种通知类型,上述三种通知类型是SpringAop模块定义的,它们是AOP联盟定义的Advice的子类型
适配器模式是一种结构型模式,注重兼容,转换,适配者与被适配者之间没有层级关系,也没有必然联系
代码实现
不改变原来的代码实现新增的注册方法
public class SiginService {
/**
* 注册方法
* @param username
* @param password
* @return
*/
public ResultMsg regist(String username,String password){
return new ResultMsg(200,"注册成功",new Member());
}
/**
* 登录的方法
* @param username
* @param password
* @return
*/
public ResultMsg login(String username,String password){
return null;
}
}
public class SiginForThirdService extends SiginService {
public ResultMsg loginForQQ(String openId){
//1、openId是全局唯一,我们可以把它当做是一个用户名(加长)
//2、密码默认为QQ_EMPTY
//3、注册(在原有系统里面创建一个用户)
//4、调用原来的登录方法
return loginForRegist(openId,null);
}
public ResultMsg loginForWechat(String openId){
return null;
}
public ResultMsg loginForToken(String token){
//通过token拿到用户信息,然后再重新登陆了一次
return null;
}
public ResultMsg loginForTelphone(String telphone,String code){
return null;
}
public ResultMsg loginForRegist(String username,String password){
super.regist(username,null);
return super.login(username,null);
}
public class SiginForThirdServiceTest {
public static void main(String[] args) {
SiginForThirdService service = new SiginForThirdService();
//不改变原来的代码,也要能够兼容新的需求
//还可以再加一层策略模式
service.loginForQQ("sdfgdgfwresdf9123sdf");
}
}