美文网首页程序员
设计模式-结构篇(适配器模式)

设计模式-结构篇(适配器模式)

作者: 小酷哥 | 来源:发表于2017-02-10 14:22 被阅读0次
    适配器模式

    将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。

    优点:
    1、可以让任何两个没有关联的类一起运行。
    2、提高了类的复用。
    3、增加了类的透明度。
    4、灵活性好。

    缺点:
    1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。
    2、由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

    实例:
    一个MacBook笔记本只支持三插头的。但是我们的墙角只有一个两插头的插座,
    所以需要一个转换头(适配器),将两插头变为三插头,好让我们笔记本使用

    /**
     * Created by malei on 2016/12/5.
     */
    public class MacBook {
    
        private  ThreePlug plug;
    
        public MacBook(ThreePlug plug){
            this.plug = plug;
        }
    
        //充电
        public void charge(){
            System.out.println("使用三相电流供电");
            plug.powerwith3();
        }
        public static void main(String[] args){
            Adapter_2to3 adapter = new Adapter_2to3();
            MacBook book = new MacBook(adapter);
            book.charge();
    
        }
    }
    
    /**
     * Created by malei on 2016/12/5.
     * 三插头的接口
     */
    public interface ThreePlug {
        //给电
        void powerwith3();
    }
    
    /**
     * Created by malei on 2016/12/5.
     * 国标二相插座,即需要适配的类(Adaptee)
     * 墙上的插座居然是两相的
     */
    public class GBTwoPlug {
        public void powerwith2(){
            System.out.println("使用二相电流供电");
        }
    }
    
    /**
     * Created by malei on 2016/12/5.
     * 二相转三相的适配器(Adapter)
     */
    public class Adapter_2to3 extends GBTwoPlug implements ThreePlug{
    
        @Override
        public void powerwith3() {
            Log.show("适配器启动");
            this.powerwith2();
        }
    }
    

    相关文章

      网友评论

        本文标题:设计模式-结构篇(适配器模式)

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