当前位置: 首页 > news >正文

设计模式系列(图文解析,附带源码) - 适配器

1. 适配器(Adapter)

Intent

把一个类接口转换成另一个用户需要的接口。


Class Diagram


Implementation

鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。

要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子!

public interface Duck {
    void quack();
}
public interface Turkey {
    void gobble();
}
public class WildTurkey implements Turkey {
    @Override
    public void gobble() {
        System.out.println("gobble!");
    }
}
public class TurkeyAdapter implements Duck {
    Turkey turkey;

    public TurkeyAdapter(Turkey turkey) {
        this.turkey = turkey;
    }

    @Override
    public void quack() {
        turkey.gobble();
    }
}
public class Client {
    public static void main(String[] args) {
        Turkey turkey = new WildTurkey();
        Duck duck = new TurkeyAdapter(turkey);
        duck.quack();
    }
}

JDK

  • java.util.Arrays#asList()
  • java.util.Collections#list()
  • java.util.Collections#enumeration()
  • javax.xml.bind.annotation.adapters.XMLAdapter

相关文章:

  • 一文搞定设计模式!五万字超详细解析!带着耐心点进来!
  • 一个系列搞定MyBatis:MyBatis配置动态SQL语句基础
  • 一个系列搞定MyBatis:MyBatis快速上手增删改查
  • 一个系列搞定MyBatis:Mybatis多表查询
  • PropertyPlaceholderConfigurer 用法超详细解析!
  • JavaFX之WebView超详细解析!
  • javafx之webEngine超详细解析
  • mybatis-plus进阶教程!超详细使用方法解析!
  • mybatis-plus入门教程!看完必懂!超详细解析!
  • Mybatis-Plus中的代码生成器AutoGenerator超详细解析!完整配置!
  • Mybatis plus关闭驼峰命名,防止出现查询为Null!四种方法超详细解析!
  • Spring体系结构超详细解析!
  • 自然语言处理系列之: NLP基础
  • 自然语言处理系列之:中文分词技术
  • 自然语言处理系列之:词性标注与命名实体识别
  • 分享的文章《人生如棋》
  • 【Amaple教程】5. 插件
  • 30天自制操作系统-2
  • 4个实用的微服务测试策略
  • flask接收请求并推入栈
  • git 常用命令
  • IDEA 插件开发入门教程
  • JAVA 学习IO流
  • Nacos系列:Nacos的Java SDK使用
  • React+TypeScript入门
  • spring boot 整合mybatis 无法输出sql的问题
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 跨域
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 提醒我喝水chrome插件开发指南
  • 学习Vue.js的五个小例子
  • 06-01 点餐小程序前台界面搭建
  • postgresql行列转换函数
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​linux启动进程的方式
  • #pragma once
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (07)Hive——窗口函数详解
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)uboot源码分析
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)大型网站架构演变和知识体系
  • (转)详解PHP处理密码的几种方式
  • *1 计算机基础和操作系统基础及几大协议
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net Core与存储过程(一)
  • .NET NPOI导出Excel详解
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET命名规范和开发约定
  • /etc/sudoer文件配置简析