设计模式系列3--适配器模式
来源:互联网 发布:轻薄笔记本推荐 知乎 编辑:程序博客网 时间:2024/05/22 01:48
适配器模式 : 将原接口转化为客户希望的另一个接口
适配器种类: 1 对象的适配 (通过 在新的接口 拥有老接口对象的引用)
2 类的适配 (通过 继承) 由于类适配器模式通过多重继承对一个接口与另一个接口进行匹配,而C#、java等语言都不支持多重继承,因而这里只是介绍对象适配器。
下面举例说明
目前系统拥有 PC网站, app 2个 登录功能, 都实现了 login接口, 参数要求( 用户名 密码 )
网站和 app 都实现了登录功能,但后来产品经理说,APP不要每次都登录,可以把登录的userid保留在COOKIES,下次自动登录
修改前:
1 User 类
package design.Adapter;
public class User {
String name;
String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
2 登录类 接口
package design.Adapter;
public interface Logining {
//处理登录
public boolean Login(String name,String pwd);
}
3 APP 登录 实现类
package design.Adapter;
public class App implements Logining {
@Override
public boolean Login(String name, String pwd) {
System.out.println("APP登录成功,用户名:"+name);
//增加其他 功能 ,比如 操作日志 之类的
return true;
}
}
---------------------------需要为 APP提供 额外的登录方法 为APP增加适配类,用来复用原有代码------------------
package design.Adapter;
public class App2 {
//持有 原有接口的引用
Logining appLogin;
public boolean appLogin2(int userid)
{
//通过 cookies传来的userid 查询数据库
User user =User.findById(userid);
appLogin =new App();
// 调用原接口 , 不修改原有业务代码 ,
return appLogin.Login(user.name, user.pwd);
}
}
好了 ,适配器 代码写完了。 是不是 有点像 Proxy 代理模式?
代理模式 要求: 实现类 和代理类 实现相同接口 ,而我们这里新的 类 不需要实现相同接口, 只需要持有 原有接口的引用。
搜easy
- 设计模式系列3--适配器模式
- 适配器模式 - 设计模式系列
- 设计模式系列--适配器模式
- 设计模式系列:适配器模式
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 适配器
- JAVA系列-设计模式-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列--适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- 递归
- Altium Designer笔记之放置网络标号时快速确定名称
- 天声人語 20150901
- C#命名规则小总结
- form提交时,哪些数据是有效的
- 设计模式系列3--适配器模式
- mybatis分页插件
- HDU——2612 Find a way(广搜)
- 查看Linux下重要硬件的相关信息
- Altium Designer笔记之编译屏蔽/Compile Mask
- 关于异或运算的一个问题
- 表单验证的一些正则表达式
- WoSign EV代码签名数字证书准备就绪
- LinkedList基本用法