Java实现适配器模式

2021/7/2 14:23:37

本文主要是介绍Java实现适配器模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

适配器模式(Adapter)
适配器模式涉及到3个角色:要被适配的接口,适配器,目标接口
适配器的工作就是将被适配的接口转换为目标接口
“鸭子类型”就是一个典型的适配器模式:如果它走起来像鸭子,叫起来像鸭子,那么它就是一只鸭子。

适配器模式示例:女儿国只有女人能加入,现在让唐僧加入女儿国

定义要被适配的接口与目标接口

目标接口:女人接口,女人只会唱歌

public interface Female
{
    void sing();
}

要被适配的接口:男人接口,男人只会打架

public interface Male
{
    void fight();
}

唐僧是一个男人,只会打架,不会唱歌

public class TangSeng implements Male
{
    @Override
    public void fight()
    {
        System.out.println("阿弥陀佛");
    }
}

现在,女儿国中只有女人才能加入

public class FemaleCountry
{
    private final Set<Female> females;

    public FemaleCountry()
    {
        this.females=new HashSet<>();
    }
    
    // 只有女人可以加入
    public void join(Female female)
    {
        females.add(female);
    }
}

但是,唐僧一心要加入女儿国,他有什么办法呢?到了适配器出马的时候了

// 适配器实现目标接口
public class MaleAdapter implements Female
{
    // 适配器内部包装了要被适配的对象
    private Male male;

    public MaleAdapter(Male male)
    {
        this.male = male;
    }

    // 表面是在唱歌,实际上是在打架
    @Override
    public void sing()
    {
        System.out.println("敢问圣僧,女儿美不美?");
        male.fight();
    }
}

现在,男人已经可以适配女人接口了,让唐僧加入女儿国

public static void main(String[] args)
{
    FemaleCountry country=new FemaleCountry();
    // 用适配器包装
    MaleAdapter tangseng=new MaleAdapter(new TangSeng());
    // 唐僧也会唱歌
    tangseng.sing();
    // 唐僧也可以加入女儿国
    country.join(tangseng);

    System.out.println(country);
}


这篇关于Java实现适配器模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程