设计模式之适配器模式

适配器模式

文章目录

定义

适配器模式(Adapter Pattern)的定义如下:

Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.(将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。)

优缺点

优点
  1. 增加了类的透明性

    想想看,我们访问的Target目标角色,但是具体的实现都委托给了源角色,而这些对高层次模块是透明的,也是它不需要关心的

  2. 提高了类的复用度

    当然了,源角色在原有的系统中还是可以正常使用,而在目标角色中也可以充当新的演员。

  3. 灵活性非常好

    某一天,突然不想要适配器,没问题,删除掉这个适配器就可以了,其他的代码都不用修改,基本上就类似一个灵活的构件,想用就用,不想就卸载。

示例代码

  1. 定义接口

    java 复制代码
    public interface Target {
        void request();
    }
  2. 实现类

    java 复制代码
    public class ConcreteTarget implements Target {
        @Override
        public void request() {
            System.out.println("concrete receive request");
        }
    }
  3. 定义适配器

    java 复制代码
    public class Adaptee {
        public void doSomething() {
            System.out.println("do something");
        }
    }
  4. 具体类 继承适配器类以及实现Target接口

    java 复制代码
    public class Adapter extends Adaptee implements Target {
        @Override
        public void request() {
            super.doSomething();
        }
    }
  5. 测试方法

    java 复制代码
    @Test
    public void test() {
        // 原有的业务逻辑
        Target target = new ConcreteTarget();
        target.request();
        // 现在增加了适配器角色后的业务逻辑
        Target target2 = new Adapter();
        target2.request();
    }

    运行结果

    复制代码
    concrete receive request
    do something

源码地址

https://gitee.com/youxiaxiaomage/java-practices/tree/master/yxxmg-gof-sample/src/main/java/com/yxxmg/gof/structure/adapter

相关推荐
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-42-访问者模式(业务实战篇)
java·spring·设计模式·访问者模式·asm·营销规则·数据结构与操作分离
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-43-访问者模式(源码剖析篇)
java·设计模式·访问者模式·源码分析·elementvisitor·asm classvisitor·spring spel
Michael_lcf2 天前
Agent设计模式:思考-行动-观察循环的本质与局限
设计模式·agent设计模式·agent设计模式的本质
丰锋ff2 天前
设计模式学习笔记
笔记·学习·设计模式
米啦啦.2 天前
设计模式/
观察者模式·单例模式·设计模式·工厂模式
QuZhengRong2 天前
【AI】Agent 全栈进阶|Agent 设计模式
人工智能·学习·设计模式·llm·agent
码匠许师傅2 天前
【设计模式精讲】2. 设计原则基石:SOLID 与几条关键原则
java·设计模式·log4j
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-41-备忘录模式(源码剖析篇)
java·设计模式·备忘录模式·源码分析·serializable·undo log·spring statemachine
yinchnag2 天前
CRTP:奇异递归模板模式在 Go 模块系统中的实现
设计模式·go
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-40-备忘录模式(业务实战篇)
java·设计模式·事务回滚·备忘录模式·状态保存·spring transactional·购物车快照