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

    定义:将一个类的接口转换成用户期望的另一个接口

    使原本接口不兼容的类可以一起工作

    结构型

    应用场景:

    已经存在的类,他的方法和需求不匹配时(方法结果相同或相似)

    功能类似而接口不相同的情况下的解决方案

    优点:

    能提高类的透明性和复用,现有的类复用但不需要改变

    目标类和适配器 类解耦,提高程序扩展性

    符合开闭原则

     类:

    public class Adapteee {
    
        public  void adapteeRequest(){
            System.out.println("被适配着的方法");
            
        }
    }
    public interface Target {
    void request();
    }
    public class ConcreteTarget implements Target {

    public void request() {
    System.out.println("目标方法");
    }
    }
    public class Adapter  extends Adapteee implements Target{
    public void request() {
    super.adapteeRequest();
    }
    }
    public class Test {
    public static void main(String[] args) {
    Target target=new ConcreteTarget();

    target.request();

    Target adapterTarget=new Adapter();
    adapterTarget.request();
    }
    }

      对象:

    public class Adapteee {
    
        public  void adapteeRequest(){
    
            System.out.println("被适配着的方法");
        }
    }
    public class ConcreteTarget implements Target {
    
        public void request() {
            System.out.println("目标方法");
        }
    }
    public class Adapter implements  Target{
        private  Adapteee adapteee=new Adapteee();
    
        public void request() {
            adapteee.adapteeRequest();
        }
    }
    public class Test {
    public static void main(String[] args) {

    Target target=new ConcreteTarget();

    target.request();

    Target adapterTarget=new Adapter();
    adapterTarget.request();
    }
    }

      实际应用:

    public class AC220 {
        public  int outputAC220v(){
            int output=220;
            System.out.println("输出交流电"+output+"V");
            return output;
        }
    }
    public interface DC5 {
        int outputDC5V();
    }
    public class PowerAdapter implements   DC5{
    
        private  AC220 ac220=new AC220();
        public int outputDC5V() {
            int adapterInput=ac220.outputAC220v();
            int adapterOutput=adapterInput/44;
            System.out.println("使用PowerAdapter输入AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
            return adapterOutput;
        }
    }
    public class Test {
        public static void main(String[] args) {
            DC5 dc5=new PowerAdapter();
            dc5.outputDC5V();
           
        }
    }
    

      

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10557476.html
Copyright © 2011-2022 走看看