博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
适配器模式:
阅读量:3920 次
发布时间:2019-05-23

本文共 1542 字,大约阅读时间需要 5 分钟。

适配器模式:

  1. 简单介绍:适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本 因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper) 主要分为三类:类适配器模式、对象适配器模式、接口适配器模式
    在这里插入图片描述
    在这里插入图片描述
  2. 代码实现:
    • 被适配者 service

      public class Voltage {
      // 创建一个被适配者 这里就是 220v电压 private int v = 220;// 原本的电压就是220v public int getV220(){
      //System.out.println(v); return v; }}
    • Client interface 就是将220V转成5V

      public interface Voltage5 {
      int get5();}
    • Adapter

      public class VoltageAdaptre extends Voltage implements Voltage5 {
      @Override public int get5() {
      // 这种形式是类适配器 但是 这种形式 两点缺点:一种就是 java中的类的单继承问题 // 2就是 被适配类中的方法需要暴露出来 为了解决上面的问题 使用的是对象适配模式 // 获取原有的电压 int v220 = getV220(); //进行适配 int src = v220 / 44; return src; }}
      public class VoltageAdaptre2  implements Voltage5 {
      private Voltage voltage; // 对象适配器模式推荐使用 public VoltageAdaptre2(Voltage voltage){
      this.voltage = voltage; } @Override public int get5() {
      int v220 = voltage.getV220(); //进行适配 int src = v220 / 44; return src; }}
    • Client 就是Phone

      public class Phone {
      // 进行充电:使用的方法: public int charging(Voltage5 voltage){
      //System.out.println(voltage.get5()); return voltage.get5(); } public static void main(String[] args) {
      Phone phone = new Phone(); int charging = phone.charging(new VoltageAdaptre()); System.out.println(charging); }}
  3. 适配器模式在jdk中的实例:FutureTask 中 为什么能传入Runnable 也能传入 Callable
    在这里插入图片描述
    在这里插入图片描述
    使用的就是适配器模式:
    在这里插入图片描述

转载地址:http://kbxrn.baihongyu.com/

你可能感兴趣的文章
五年了,别再把务虚会开 “虚” 了
查看>>
一文看懂"async"和“await”关键词是如何简化了C#中多线程的开发过程
查看>>
每天都在支付,你真的了解信息流和资金流?
查看>>
.Net Core 自定义配置源从配置中心读取配置
查看>>
设计模式之享元模式
查看>>
单例模式最佳实践
查看>>
.NET Core + Spring Cloud:服务注册与发现
查看>>
今天你内卷了吗?
查看>>
设计模式之代理模式
查看>>
结构型设计模式总结
查看>>
dotNET:怎样处理程序中的异常(实战篇)?
查看>>
What is 测试金字塔?
查看>>
.Net Core HttpClient处理响应压缩
查看>>
十分钟搭建自己的私有NuGet服务器-BaGet
查看>>
efcore 新特性 SaveChanges Events
查看>>
龙芯3A5000初样顺利交付流片
查看>>
用了Dapper之后通篇还是SqlConnection,真的看不下去了
查看>>
ABP快速开发一个.NET Core电商平台
查看>>
[NewLife.Net]单机400万长连接压力测试
查看>>
使用Azure人脸API对图片进行人脸识别
查看>>