zoukankan      html  css  js  c++  java
  • java设计模式之适配器模式

      说到适配器,我们可能会想到电脑的适配器,没错,其实作用是一样的,电脑的适配器在中国可以使用,在美国也可以使用,它的主要作用是在新接口和老接口之间进行适配。。这就是一个适配的过程,适配器模式的类图如下:

      这个类图是我在其他的地方截到的,我以前觉的类图特别不好看,慢慢接触之后发现类图和流程图都特别有意义,一看就特别的清晰。整个流程就是通过AdapterAdaptee转换为目标(Target)的子类。既然已经知道原理了,那下面开始码代码吧。我来举例一个场景吧,经常需要使用到投影仪,但是有一些人的电脑并不支持投影仪的大口,只能使用适配器了。那就是可以把小口转换为大口。

    package com.roc.adapter;
    /**
     * 投影仪支持的大口
     * @author liaowp
     *
     */
    public interface BigPort {
        
        public void userBigPort();//使用的大口
    }
    package com.roc.adapter;
    /**
     * 电脑的小口
     * @author liaowp
     *
     */
    public interface SmallPort {
        public void userSmallPort();//使用小口
    }
    package com.roc.adapter;
    /**
     * 适配器模式
     * @author liaowp
     *
     */
    public class SmallToBig implements BigPort{
    
        private SmallPort smallPort;//小口
        
        public SmallToBig(SmallPort smallPort){//获得小口
            this.smallPort=smallPort;
        }
    
        public void userBigPort() {
            this.smallPort.userSmallPort();    //使用小口
        }
                
    }
    package com.roc.adapter;
    /**
     * 客户端
     * @author liaowp
     *
     */
    public class Client {
    
        public static void main(String[] args) {
            SmallPort smallPort = new SmallPort() {//电脑自带小口
                public void userSmallPort() {
                    System.out.println("使用的是电脑小口");
                }
            };
            //需要一个大口才可以投影,小口转换为大口
            BigPort bigPort=new SmallToBig(smallPort);
            bigPort.userBigPort();//电脑小口工作中    实现了适配
        }    
    }

    下面说一下适配器的优缺点:

    优点:

    1、将目标类和适配者类解耦

    2、增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性

    3、灵活性和扩展性都非常好,符合开闭原则

    类适配器还有的优点:

    1、由于适配器类是适配者类的子类,因此可以再适配器类中置换一些适配者的方法,使得适配器的灵活性更强。

    类适配器的缺点:

    1、对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。

    对象适配器还有的优点:

    1、把多个不同的适配者适配到同一个目标,也就是说,同一个适配器可以把适配者类和他的子类都适配到目标接口。

    对象适配器的缺点:

    1、与类适配器模式相比,要想置换适配者类的方法就不容易。

    适配器模式与代理模式的区别:

    适配器模式

        是把2个不同的东西转换到可以正常使用,适配器是去迎合目标对象与源对象。

    代理模式

        是2个对象都有相同的功能,2者接口是一样的。

  • 相关阅读:
    BZOJ3197:[SDOI2013]刺客信条——题解
    C 程序与 C++ 程序之间的相互调用
    使用Dev C++调试(debug)程序
    ARM 汇编指令 ADR 与 LDR 使用
    华为交换机以 LACP 模式实现链路聚合
    DLCI 简介
    华为路由器帧中继 FR 实验
    GVRP 的工作机制和工作模式
    华为路由器 HDLC 实验
    华为路由器 IPSec 与 GRE 结合实验
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/5693053.html
Copyright © 2011-2022 走看看