1 介绍
适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作
目的:让原本接口不兼容的类可以兼容
2 拓展登录
uml图:
2.1 账号/密码登录
public class SignService {
/**
* 账号密码登录
*/
public String login(String username, String password) {
return "账号: " + username + ", 密码: " + password + ",登录成功";
}
}
2.2 三方登录接口
public interface LoginForThird {
String loginForQQ(String id);
String loginForWechat(String id);
String loginForTelphone(String phone);
}
2.3 适配器
public class LoginAdapter extends SignService implements LoginForThird {
@Override
public String loginForQQ(String qq) {
return "qq :" + qq + ", 登录成功";
}
@Override
public String loginForWechat(String vx) {
return "vx :" + vx + ", 登录成功";
}
@Override
public String loginForTelphone(String phone) {
return "phone :" + phone + ", 登录成功";
}
}
2.4 测试
public class AdapterTest {
public static void main(String[] args) {
LoginAdapter loginAdapter = new LoginAdapter();
System.out.println(loginAdapter.login("admin", "123456"));
System.out.println(loginAdapter.loginForQQ("772823460"));
System.out.println(loginAdapter.loginForWechat("rosh66666"));
}
}
2.5 优点/缺点
优点:
(1) 能提高类的透明性和复用,现有的类复用但不需要改变。
(2) 目标类和适配器类解耦,提高程序的扩展性。
(3) 在很多业务场景中符合开闭原则。
缺点:
(1) 适配器编写过程需要全面考虑,可能会增加系统的复杂性。
(2) 增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。