美文网首页程序员
适配器模式简介

适配器模式简介

作者: eb6684925911 | 来源:发表于2018-09-26 23:01 被阅读11次

本文介绍了适配器模式并附有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;主题为问候;内容为你好。

相关文章

网友评论

    本文标题:适配器模式简介

    本文链接:https://www.haomeiwen.com/subject/wetroftx.html