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

    一、什么是适配器

    适配器是将一种接口改造成另外一种接口的一个包装类;

    适配器就是将现有类按照目标标准接口的形式表现出来

    思想:将已有的旧的事物用新的标准来表现出来

    二、说明

    两种实现方式:继承、组合

    使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口;

    优点:符合开闭原则;适配者类和目标类解耦;代码复用;

    三、角色

    目标接口

    适配器类

    适配者类

    使用者

    四、Java实例

    简介:现有一个USB接口和一个PSP接口实现类,功能都是进行充电,该例子的目的就是对PSP接口实现类进行包装,使之能用USB接口充电;

    目标接口(标准接口),使用USB接口充电

    package designpatterns.adapter;
    
    public interface IUSB {
        public void charge();
    }

    被适配类,使用psp类进行充电

    package designpatterns.adapter;
    
    public class PSP {
        public void pspCharge(){
            System.out.println("使用PSP充电");
        }
    }

    适配器类(继承方式实现)

    package designpatterns.adapter;
    
    public class Adapter extends PSP implements IUSB{
        @Override
        public void charge() {
            super.pspCharge();
        }
    }

    适配器类(组合方式),组合PSP对象,并实现IUSB接口

    package designpatterns.adapter;
    
    public class AdapterCombination implements IUSB{
        private PSP psp;
    
        public AdapterCombination(PSP psp){
            this.psp = psp;
        }
    
        @Override
        public void charge() {
            psp.pspCharge();
        }
    }

    主类测试

    package designpatterns.adapter;
    
    public class AAAdaTest {
        public static void main(String[] args) {
            //继承方式 适配器
            IUSB iusb = new Adapter();
            iusb.charge();
    
            //组合方式 适配器
            IUSB iusb1 = new AdapterCombination(new PSP());
            iusb1.charge();
        }
    }

    打印结果:

    使用PSP充电
    使用PSP充电
  • 相关阅读:
    NOIp2018集训test-10-17 (bike day3)
    NOIp2018集训test-10-16 (bike day2)
    django简介中
    django简介上
    bootstrap
    jQuery简介
    js完整篇
    css完结
    css三
    前端二与css开篇
  • 原文地址:https://www.cnblogs.com/limaosheng/p/10211774.html
Copyright © 2011-2022 走看看