适配器模式(Adapter)

垃圾回收官
• 阅读 4635

适配器模式

一.适配器模式

1.1 定义

  • 将一个接口转换成客户希望的另一个接口.

1.2 角色

  1. 目标接口对象(Target):客户希望的另一个接口或具体类.
  2. 需要适配的类(Adaptee):现有的,不符合客户需求的接口或具体类.
  3. 适配器对象(Adapter):包装适配的对象,转换接口.

1.3 实现方式

  1. 类适配器(继承).
  2. 对象适配器(聚合).

二. 具体实现

2.1 创建目标接口及实现类

    public interface ITarget {
        void show();
    }
    public class Target implements ITarget{
        public Target(){
            System.out.println("create target...");
        }
        @Override
        public void show() {
            System.out.println(this.getClass().getSimpleName());
        }
    }

2.2 创建需要适配的接口及实现类

    public interface IAdaptee {
    }
    public class Adaptee implements IAdaptee{
    }

2.3 类适配器

    public class Adapter1 implements IAdaptee{
        ITarget target;
        public ITarget convert(IAdaptee adaptee){
            if(adaptee != null){
                target = new Target();
            }
            return target;
        }
    }

2.4 对象适配器

    public class Adapter2 implements ITarget,IAdaptee{
        @Override
        public void show() {
            System.out.println(this.getClass().getSimpleName());
        }
    }

2.5 调用

    public static void main(String[] args) {
        Adapter1 adapter1 = new Adapter1();
        ITarget target = adapter1.convert(new Adaptee());
        target.show();

        Adapter2 adapter2 = new Adapter2();
        adapter2.show();
    }

2.6 输出

    create target...
    Target
    Adapter2

三. 优缺点

3.1 优点

  • 灵活性好,提高了类的复用度.

3.2 缺点

  • 过多使用会使系统杂乱.

四. 源码


    https://github.com/Seasons20/DisignPattern.git

END

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
7、【C++ STL】适配器
1、基本概念适配器,在STL中扮演着转换器的角色,本质上是一种设计模式,用于将一种接口转换成另一种接口,从而是原本不兼容的接口能够很好地一起运作。适配器不提供迭代器。2、基本类型根据目标接口的类型,适配器可分为以下几类:(1)改变容器的接口,称为容器适配器;(2)改变迭代器的接口,称为迭代器适配器;
Wesley13 Wesley13
3年前
Java设计模式(一)
Structuralpatterns结构型模式1.适配器模式(Adaptor)目的:将某个类/接口转换为client期望的其他形式。适配器让类可以协同工作,否则就会因为不兼容的接口而无法工作。通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。假设我们有一个MediaPlayer接口和一个实现了
Stella981 Stella981
3年前
Python之设计模式
一、设计模式分类a、创建型模式简单工厂模式一、内容不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例。二、角色工厂角色(Creator)抽象产品角色(Product)具体产品角色(ConcreteProduct)
Wesley13 Wesley13
3年前
00_设计模式之语言选择
设计模式之语言选择设计模式简介背景设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Wesley13 Wesley13
3年前
Java适配器设计模式 的优缺点
1\.定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2\.适配器模式的本质转换匹配,复用功能。3\.优点:更好的复用如果功能是已经有了的,只是接口不兼容,那么通过适配器模式就可以让这些功能得到更好的复用。更好的可扩展在实现适配器功能的时候,可以调用自己
Wesley13 Wesley13
3年前
Java中的设计模式
注:基于《Java高并发编程详解汪文君》、《深入理解JVM高级特性与最佳实践周志明》,以学习为目的,加上自身理解、验证。作为笔记,为加深印象,做到不复制,不粘贴。欢迎,大家一起交流学习。适配器模式如果当前类的接口不适用与客户端,那么把它转换为客户端所能接受的另一种接口就是适配器模式。从而使得两个接口不匹配而无法在一起工作的两个类能够在一起
Wesley13 Wesley13
3年前
C++ 常用设计模式(学习笔记)
设计模式1、工厂模式在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式作为一种创建模式,一般在创建复杂对象时,考虑使用;在创建简单对象时,建议直接new完成一个实例对象的创建。1.1、简单工厂模式主要特点是需要在工厂类中做判断,从而创造相应的产品,当
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(