2018年12月25日 12:56
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。

适配器,顾名思义,就是将不兼容的东西适配在一起工作。比如买了两个插线板,一个是插头是三相,插板上全是三个孔用来插空调,微波炉,冰箱等。另一个是两相,插板上都是两个孔用来插电视机,电视猫,路由器等。但是我们的墙上只有两个三相的接口,那么这时候两相插头的插板将无法工作,无法工作,意味着一部分电器不能工作。

这时候我们就需要先找一个能插两口的转换器,再将两相的这个插板插到转换器的三相插口上,这时候电器不论三相还是两相都可以插上去。

那么我们先定义一下接口,即墙上的插口,只能支持三相的插头。

public interface 插板接口
{
    void 插三个口();
}

再下来,我们先把三相的插头插进去,让他工作起来。

public class 三相插板 : 插板接口
{
    public void 插三个口()
    {
        Console.WriteLine("三相插板工作了");
    }
}

再下来,我们买一个两相插头的插板,插两个口才能工作。

public class 两相插板
{
    public void 插两个口() 
    {
        Console.WriteLine("两相插板工作了");
    }
}

但是很明显,它无法插到墙上的插口上,这时我们的转换器登场了。

public class 插板接口适配 : 插板接口
{
    两相插板 两相插板对象;
    public 插板接口适配(两相插板 两相插板对象)
    {
        this.两相插板对象 = 两相插板对象;
    }

    public void 插三个口()
    {
        this.两相插板对象.插两个口();
    }
}

通过转换器,我们的两相插板可以顺利工作起来

插板接口 三相插板实例 = new 三相插板();
插板接口 两相插板实例 = new 插板接口适配(new 两相插板());

三相插板实例.插三个口();
两相插板实例.插三个口();

最终的执行结果就是

三相插板工作了
两相插板工作了

当然了,有的人说再买一个插板不就完了。当然,这要看成本,比如一个ps接口的键盘,在电脑上没有ps接口,只有usb接口,你是买转换器转成usb呢,还是再买一个usb口的键盘,当然我们用转换器比较划算。

设计模式不一定非要用,只是在特定场景下可以帮你解决一些现实问题。

发表评论
匿名  
用户评论
暂无评论