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

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

文章目录

适配器模式介绍

使用者依赖的接口与提供者的接口不匹配时,就加一层适配,而不改两端的代码

作用:将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本接口不匹配的两个类可以协同工作,别名为包装器Wrapper,比如220V交流电->适配器->12V直流电

核心思想:将已有的功能通过适配器变成当前需要的功能

应用场景

  • 系统需要使用现有的类,而这些接口不符合系统的需要
  • 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作
  • 需要一个统一的输出接口,而输入端的类型不可预知

模式类图

在这里插入图片描述

几种类别

类适配器

Adapter类,通过继承src类,实现dst类接口,完成src->dst的适配

/***src,我们有220v交流电*/public class Voltage220 {
public int output220V() {
int src = 220; System.out.println("我是" + src + "V"); return src; }}/***dst,我们想要5V直流电*/public interface Voltage5 {
int output5V();}/***adapter,集成src,实现dst接口,完成src->dst的适配*/public class VoltageAdapter extends Voltage220 implements Voltage5 {
@Override public int output5V() {
int src = output220V(); System.out.println("适配器工作开始适配电压"); int dst = src / 44; System.out.println("适配完成后输出电压:" + dst); return dst; }}

对象适配器(常用)

Adapter类,通过持有src类,实现dst类接口,完成src->dst的适配。相比类适配,只需要修改Adapter适配器

/***adapter,持有src,实现dst接口,完成src->dst的适配*/public class VoltageAdapter2 implements Voltage5 {
private Voltage220 mVoltage220; public VoltageAdapter2(Voltage220 voltage220) {
mVoltage220 = voltage220; } @Override public int output5V() {
int dst = 0; if (null != mVoltage220) {
int src = mVoltage220.output220V(); System.out.println("对象适配器工作,开始适配电压"); dst = src / 44; System.out.println("适配完成后输出电压:" + dst); } return dst; }}

接口适配器模式

当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求,它适用于一个接口不想使用其所有的方法的情况

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

你可能感兴趣的文章
JDBCUtils工具类
查看>>
Linux基本命令(1)
查看>>
Linux基本命令(二)
查看>>
Hive2.0函数大全(中文版)
查看>>
hive里面的连接操作(join)
查看>>
卸载oracle
查看>>
hive 自定义函数jar发布的方法
查看>>
对DMA传输机制的学习
查看>>
QT中this指针
查看>>
java中的异常机制
查看>>
java SE面向对象思维导图
查看>>
三维分析之视频投放
查看>>
SuperMap iDesktop之栅格值怎么查
查看>>
SuperMap iClient3D for WebGL教程-orientation
查看>>
SuperMap iClient3D for WebGL教程-description描述属性
查看>>
SuperMap iClient3D for WebGL教程-CallbackProperty
查看>>
如何修改leaflet聚合图的层级和样式
查看>>
三维分析之开敞度分析
查看>>
BIM+GIS应用的八大挑战
查看>>
.net实现.aspx页面自动加载.cs程序定义的变量并按照格式输出
查看>>