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();
           
        }
    }
    

      

  • 相关阅读:
    beego 注解路由无效问题分析
    sync.Map实现分析
    由浅入深聊聊Golang的sync.Map
    Go语言编程:使用条件变量Cond和channel通道实现多个生产者和消费者模型
    golang 的 channel 实现 生产者/消费者 模型
    Golang sync.NewCond条件锁的用法
    golang channel多生产者和多消费者实例
    Go语言的那些坑
    go语言标准库sync/atomic中的原子操作
    理解 Go 标准库中的 atomic.Value 类型
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/10557476.html
Copyright © 2011-2022 走看看