设计模式-缺省适配器模式

介绍

大家所熟悉的是如果实现某一个接口,必须实现接口中的每一个方法。在适配器模式中,如果目标(Target)角色中的方法众多,需要的仅仅几个。但是根据接口的实现规则,其余的方法也必须实现,这必然造成了很多的不便,最突出的就繁琐。

这种情况下,可以考虑实现个默认适配器,然后实际的实现目标角色接口的类可以集成这个默认适配器,然后重写默认实现的方法即可。

定义

缺省适配模式为一个接口提供缺省实现,这样的类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。当原接口中定义的方法太多,而其中大部分又不被需要时,这种模式非常实用。由缺省适配器类直接实现目标(Target)角色接口,并为所有方法提供缺省的空实现。用户类就只需要继承适配器类,只实现感兴趣的方法就行了。

UML类图

这里写图片描述

目标(Target)角色:目标接口。可能定义有很多方法,但这些方法不一定全都被用户类所需要。

缺省适配器(Default Adapter):缺省适配模式的核心。它实现Target角色接口,为所有方法提供空的实现(也就是{}的空实现)。

Client:用户类,继承于缺省适配器,实现Target角色接口中感兴趣的方法。

示例代码

目标(Target)角色

public interface SubjectTarget {
    void learnChinese();

    void learnEnglish();

    void learnMath();

    void learnBiological();
}

缺省适配器(Default Adapter)

public abstract class SubjectAdapter implements SubjectTarget {
    @Override
    public void learnChinese() {

    }

    @Override
    public void learnEnglish() {

    }

    @Override
    public void learnMath() {

    }

    @Override
    public void learnBiological() {

    }
}

Client

public class StudentA extends SubjectAdapter {
    @Override
    public void learnMath() {
        super.learnMath();
        System.out.println("just learn Math");
    }
}

public class StudentB extends SubjectAdapter {
    @Override
    public void learnChinese() {
        super.learnChinese();
        System.out.println("just lear Chinese");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值