本文介绍了适配器模式并附有java代码实现demo。内容仅供参考使用,有不足之处请及时指出,也欢迎大家交流探讨。
适配器模式
适配器模式是结构型模式的一种,其可以将一个接口的功能兼容到另一个与其相对独立的接口中。
场景
假设MessageInterface有发短信的功能,我们一直通过MessageInterface来发短信,随着发展,我们需要发邮件的功能了,但是发邮件的功能MessageInterface没有,而MailInterface有,由于种种原因(例如系统升级优化,替换掉MessageInterface影响太大,成本太高),我们并不想换掉MessageInterface,所以我们只能使MessageInterface来兼容发邮件的功能,这时我们就可以用适配器模式来实现。
示例
MessageInterface接口及其实现类
public interface MessageInterface {
void sendMessage(String receiver, String content);
}
public class MessageInterfaceImpl implements MessageInterface {
@Override
public void sendMessage(String receiver, String content) {
System.out.println("发送短信收件人:" + receiver + ";内容为" + content + "。");
}
}
MailInterface接口及其实现类
public interface MailInterface {
void sendMail(String receiver, String theme, String content);
}
public class MailInterfaceImpl implements MailInterface {
@Override
public void sendMail(String receiver, String theme, String content) {
System.out.println("发送邮件收件人:" + receiver + ";主题为" + theme + ";内容为" + content + "。");
}
}
实现MessageInterface的适配器类
public class MessageAdapter implements MessageInterface {
@Override
public void sendMessage(String receiver, String content) {
MailInterface mailInterface = new MailInterfaceImpl();
mailInterface.sendMail(receiver, content.split("#")[0], content.split("#")[1]);
}
}
即能发短信也能发邮件的MessageInterface实现类
public class MessageUtil implements MessageInterface {
@Override
public void sendMessage(String receiver, String content) {
if (receiver.contains("@")) {
MessageAdapter messageAdapter = new MessageAdapter();
messageAdapter.sendMessage(receiver, content);
return;
}
System.out.println("发送短信收件人:" + receiver + ";内容为" + content + "。");
}
}
演示代码
MessageUtil messageUtil = new MessageUtil();
messageUtil.sendMessage("12345678910", "你好");
messageUtil.sendMessage("123456789@xxx.com", "问候#你好");
输出
发送短信收件人:12345678910;内容为你好。
发送邮件收件人:123456789@xxx.com;主题为问候;内容为你好。
网友评论