zoukankan      html  css  js  c++  java
  • 设计模式学习(五) 适配器模式

    结构型模式:

    ---  核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题

    ---  分类:

      适配器模式,代理模式,桥接模式,装饰模式,组合模式,外观模式,享元模式


     适配器模式:

    原理:

    -- 将一个类接口转换成客户希望的另外一个接口。

    优点:

    Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以在一起工作

    模式中的角色:

    • 目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口
    • 需要适配的类(Adaptee):需要适配的类或者适配者类
    • 适配器(Adapter):通过包装一个需要适配的对象。把原接口转换成目标接口

    实现方式:

    1:类适配器:

    package com.lp.adpater;
    
    public class Adapter extends Adaptee implements Target  {
    
        @Override
        public void handleReq() {
            super.request();
        }
    
    }
    类适配器

    2:对象适配器:

    package com.lp.adpater;
    
    public class Adaptee {
        public void request(){
            System.out.println("可以完成客户需要的功能");
        }
    }
    需要适配的类
    package com.lp.adpater;
    
    public interface Target {
        void handleReq();
    }
    目标接口
    package com.lp.adpater;
    
    public class Adapter implements Target  {
    
        private Adaptee adaptee;
        @Override
        public void handleReq() {
            adaptee.request();
        }
        public Adapter(Adaptee adaptee) {
            super();
            this.adaptee = adaptee;
        }
        
    }
    适配器
    package com.lp.adpater;
    
    //客户端类
    //相当于一个笔记本电脑,只有usb接口
    public class Client {
    
        public void test1(Target t){
            t.handleReq();
        }
        public static void main(String[] arg){
            
            Client c = new Client();
            Adaptee a = new Adaptee();
            Target t = new Adapter(a);
            c.test1(t);
        }
        
    }
    客户端

    工作中的场景:

    --  经常用来做旧系统改造和升级

    --  如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍

    学习中的场景用到适配器模式的:

    -- java.io.InputStremReader(InputStream)

    -- java.io.OutputStremReader(OutputStream)

  • 相关阅读:
    Wireshark下载地址
    WireShark过滤语法
    Centos7 虚拟机安装增强功能
    更改切换热键
    kali安装后中文乱码
    C#中关于WebBrowser的一些细节设置
    方法间多参数传递
    绑定checkedComboBox
    反射方法调用例子
    gridView 删除一行后自动定位到指定行
  • 原文地址:https://www.cnblogs.com/lipeng0824/p/4423644.html
Copyright © 2011-2022 走看看