首页 > 其他分享 >6) Adapter Pattern

6) Adapter Pattern

时间:2023-06-06 13:34:16浏览次数:37  
标签:java Power 数据线 Pattern Adapter 接口 foo public

类别:

 Structural Pattern

问题:

什么是接口?
按照标准提供服务,其他想要使用该接口的要按照该标准接入服务

什么是依赖?
持有目标对象,拥有使用权(A use B)

数据线?
数据线按USB标准接入充电宝,通过lightning 提供充电服务

手机?
通过lightning标准接入数据线

 

 

客户端因种种限制只能接入目标接口

服务器因种种限制只能提供某个固定接口

方案:

 

 

示例:

 

 

Power.java

package foo;

public class Power {

}

PowerBank.java

package foo;

public class PowerBank implements Usb {

    Power[] powers;

    @Override
    public Power discharge() {
        return null;
    }

}

MobilePhone.java

package foo;

public class MobilePhone {

    /**
     * 手机 use 数据线
     */
    Lightning lightning;

    public void charge() {
        Power power = lightning.discharge();
        // TODO 获取电量
    }
}

Adapter.java

package foo;

public class Adapter implements Lightning {

    /**
     * 数据线use 充电宝
     */
    private Usb usb;

    @Override
    public Power discharge() {
        return usb.discharge();
    }

}

Usb.java

package foo;

/**
 * 充电宝实现了usb接口,可放电
 * 
 * @author witas
 *
 */
public interface Usb {

    public Power discharge();
}

Lightning.java

package foo;

/**
 * 数据线提供了lightning接口,可以放电
 * 
 * @author witas
 *
 */
public interface Lightning {

    public Power discharge();
}

 

 

 

分析:

提供服务的是接口的实现类

消费服务的要可以接入服务

消费者接入的接口不能变(客观原因)

生产者提供的接口不能变(客观原因)

适配器实现消费者接入的固定接口,自己本身不生产,需要从生产者那里获取,转交给消费者

应用:

 

不足:(

 

优化:)

 

标签:java,Power,数据线,Pattern,Adapter,接口,foo,public
From: https://www.cnblogs.com/zno2/p/6694815.html

相关文章

  • 10) Decorator Pattern
    类别: StructuralPattern问题: 在不改变接口的前提下增加额外的服务方案:   示例:publicclassDecoratorPatternDemo{publicstaticvoidmain(String[]args){Shapecircle=newCircle();ShaperedCircle=newRedShapeDecorator(newC......
  • cpp: Bridge Pattern
     /*****************************************************************//***\fileGold.h*\brief桥接模式BridgePatternC++14*2023年6月3日涂聚文GeovinDuVisualStudio2022edit.*\authorgeovindu*\dateJune2023***********************......
  • 07 Adapter 模式 - Class Adapter
    DesignPattern:Adapter模式-ClassAdapterAdapter模式的另一种作法是ClassAdapter模式,在这个模式下,Adapter直接继承Adaptee(要引进的新类别),以拥有当中的成员及方法,在C++中的话可以这么作: C++中可以多重继承,但在Java中不行,所以在Java中若要采用ClassAdapter,必须作点修改,一方......
  • log4j2<PatternLayout>子节点浅析
    log4j2<PatternLayout>子节点浅析 首先声明本文并不教您怎么用log4j2,仅仅只对<PatternLayout>子节点进行说明。要看懂本文需要对log4j2有一定的了解,至少能够知道<Appenders>、<Layouts>和<Loggers>的区别。本文主要参考对象为log4j2官方手册:《ApacheLog4j2v.2.1User'sGuide......
  • cpp: Proxy Pattern
     /*****************************************************************//***\fileGoldWebSite.h*\brief代理模式ProxyPatternC++14*2023年5月31日涂聚文GeovinDuVisualStudio2022edit.*\authorgeovindu*\dateMay2023******************......
  • kibana智能检索发送多次_msearch —— 配置index pattern,同时设置时间段,就知道到底是
    kibanasite/elasticsearch/log-*/_field_stats?level=indices   返回:{"_shards":{"total":600,"successful":600,"failed":0},"indices":{"log-2017.11.22-19-192.168.2.3-93004":{"fields":{"Rec......
  • 解释器模式(Interpreter Pattern)
    解释器模式(InterpreterPattern)一、定义解释器模式(InterpreterPattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在SQL解析、符号处理引擎等。给定一个语言,定义它的文法的一种表示,并定义......
  • Abstract Factory Pattern 抽象工厂模式简介与 C# 示例【创建型】【设计模式来了】
    〇、简介1、什么是抽象工厂模式?一句话解释:  通过对抽象类和抽象工厂的一组实现,独立出一系列新的操作,客户端无需了解其逻辑直接访问。抽象工厂模式(AbstractFactoryPattern)是一种创建型模式。它用于创建一组相关对象的家族。强调的是一组对象之间的协作关系,而不是单个对象之......
  • cpp: State Pattern
     /*****************************************************************//***\fileGold.h*\briefStatePattern状态模式C++14*2023年5月29日涂聚文GeovinDuVisualStudio2022edit.*\authorgeovindu*\dateMay2023************************......
  • [CVPR23 Highlight] Side Adapter Network for Open-Vocabulary Semantic Segmentatio
    **摘要本文提出了一个用于开放词汇语义分割的新框架SAN,将语义分割任务建模为区域识别问题,提取maskproposals并使用CLIP对mask进行识别。SAN可以重新利用CLIP的特征,因此其本身可以非常轻量;同时网络可以端到端地进行训练,从而使SAN适应冻结的CLIP模型。本文方法需要很少的参数量,且......