23种设计模式汇总讲解文档
汇总学习网址:Java23种设计模式-学习汇总
适配器模式
定义1:将一个借口变更为客户端所期待的另一种接口,从而使原本因为接口不匹配而无法一起工作的两个类能够在一起工作。
就是字面意思,适配器。在国内是220v交流电,在美国是110v交流电。国内外使用的适配器,都会给电脑提供稳定的电源,例如12V
注意:当前模式属于补救模式,一般请勿在初始设计时使用该模式。
ReadUser .java 当前系统的接口信息
package T19;
/**
* @author YangCourage
* 当前系统接口内容
*/
public interface ReadUser {
/**获取用户名*/
public String getUserName();
/**获取用户电话*/
public String getUserTelNum();
/**获取用户性别*/
public String getUserSex();
}
UserTom.java 当前系统接口的实现类
package T19;
/**
* @author YangCourage
*
*/
public class UserTom implements ReadUser {
@Override
public String getUserName() {
return "Tom Cat";
}
@Override
public String getUserTelNum() {
return "0000 0000";
}
@Override
public String getUserSex() {
return "男";
}
}
ReadOtherUser.java 其他对接系统的接口
package T19;
/**
* @author YangCourage
* 读取其他内容的代码
*/
public interface ReadOtherUser {
/**获取用户名*/
public String getPersonName();
/**获取用户电话*/
public String getPersonTelNum();
/**获取用户性别*/
public String getPersonSex();
}
Person.java 其他接口的实现类
package T19;
/**
* @author YangCourage
*/
public class Person implements ReadOtherUser {
@Override
public String getPersonName() {
return "张三";
}
@Override
public String getPersonTelNum() {
return "123123123";
}
@Override
public String getPersonSex() {
return "女";
}
}
因为两个接口数据不互通,本系统无法使用和调用其他系统的内容
UserAdapterPerson.java 适配器示意类
package T19;
/**
* @author YangCourage
* 适配器类,适配Person的内容匹配向ReadUser接口
*/
public class UserAdapterPerson extends Person implements ReadUser {
@Override
public String getUserName() {
return this.getPersonName();
}
@Override
public String getUserTelNum() {
return this.getPersonTelNum();
}
@Override
public String getUserSex() {
return this.getPersonSex();
}
}
适配之后的类,可以与本系统进行结合使用
Main.java 函数入口
package T19;
/**
* @author YangCourage
*/
public class Main {
public static void main(String[] args) {
/**
* 本系统使用ReadUser接口读取用户信息
*/
System.out.println("++++原始系统读取原始接口对象的信息+++++");
ReadUser user = new UserTom();
System.out.println("用户名:"+user.getUserName());
System.out.println("用户电话:"+user.getUserTelNum());
System.out.println("用户性别:"+user.getUserSex());
System.out.println("++++得到其他接口信息Person对象,使用适配器即可使用+++++");
ReadUser user1 = new UserAdapterPerson();
System.out.println("用户名:"+user1.getUserName());
System.out.println("用户电话:"+user1.getUserTelNum());
System.out.println("用户性别:"+user1.getUserSex());
}
}
运行的结果
++++原始系统读取原始接口对象的信息+++++
用户名:Tom Cat
用户电话:0000 0000
用户性别:男
++++得到其他接口信息Person对象,使用适配器即可使用+++++
用户名:张三
用户电话:123123123
用户性别:女
《设计模式之禅》秦小波 ↩︎