适配器模式

将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

下面用一个例子来演示这个设计模式

 

    实现Adapter模式的2种方法与范例

Adapter模式通过在Adapter类中调用外部组件来实现功能。
根据调用方式的不同,Adapter模式有2种实现方法:
1,通过继承实现Adapter
2,通过组合让实现Adapter


    我们需要实现一个发送邮件的功能,需要用到一个名为OutMailer的外部组件,因为上述原因,我们决定用Adapter模式实现对OutMailer的透明调用。首先,我们把邮件发送的功能抽象成一个接口:

IMailer.java

interface IMailer {
    //发送邮件
    publicvoid sendMail();
}
 然后定一个实现IMailer接口的MailerAdapter类。

下面我们来看看MailerAdapter的实现方法。
通过继承实现Adapter
MailerAdapter.java

class MailerAdapter extends OutMailer implements IMailer {
    //发送邮件
    public void sendMail() {
        //调用OutMailer.sendMail()方法实现邮件发送
        this.sendMail();
    }

    //这里省略其他方法
}
  通过委让实现Adapter

 

MailerAdapter.java

class MailerAdapter implements IMailer {
    private OutMailer outMailer =new OutMailer();
    //发送邮件
    public void sendMail() {
        //调用OutMailer.sendMail()方法实现邮件发送
        outMailer.sendMail();
    }
    //这里省略其他方法
}
 不管是通过继承实现Adapter,还是通过委让实现Adapter,调用方MailerClient的调用方法完全一样,如:

MailerClient.java

IMailer mailer =new MailerAdapter();

...

mailer.sendMail();


我们可以看到,这里完全没有直接调用OutMailer,也就是说OutMailer即使被替换了,我们也不用对MailerClient做任何修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值