首页 > 其他分享 >设计模式 -- Adapter(适配器模式)

设计模式 -- Adapter(适配器模式)

时间:2022-10-10 18:56:08浏览次数:43  
标签:-- 适配器 接口 int iAdaptee 设计模式 data Adapter

适配器(Adapter)

将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。

代码

//目标接口(新接口)
interface ITarget {
    void process();
};

//遗留接口(老接口)
interface IAdaptee {
    void foo(int data);

    int bar();
};

//遗留类型
class OldClass implements IAdaptee {
    @Override
    public void foo(int data) {

    }

    @Override
    public int bar() {
        return 0;
    }
};

//对象适配器
class ObjectAdapter implements ITarget {
    // 组合
    IAdaptee iAdaptee;

    public ObjectAdapter(IAdaptee iAdaptee) {
        this.iAdaptee = iAdaptee;
    }

    public void process() {
        int data = iAdaptee.bar();
        iAdaptee.foo(data);
    }
};

// 类适配器
class ClassAdapter extends OldClass
    implements ITarget {

    @Override
    public void process() {
        int data = bar();
        foo(data);
    }
}

总结

Adapter模式主要应用于“希望复用一些现存的类,但是接口又与服用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

Adapter模式可以实现的非常灵活、例如 堆或者队列、只需对象组合集合或者类继承集合、也是符合Adapter模式的。

标签:--,适配器,接口,int,iAdaptee,设计模式,data,Adapter
From: https://www.cnblogs.com/tie-dao/p/16776808.html

相关文章

  • 函数参数、名称空间与作用域、名字的查找顺序
    函数参数、名称空间与作用域、名字的查找顺序目录函数参数、名称空间与作用域、名字的查找顺序一、函数参数1.形参与实参2.位置参数3.关键字参数4.默认参数5.可变长形参6.......
  • 引导过程与服务控制
    引言:我们需要了解系统开机的引导过程,了解了之后才可以更好地对出现的故障短时间的进行排查,更有助于我们熟练掌握对服务的控制一:Linux操作系统引导过程   1.开机自......
  • Kubernetes Traefik 路由规则及中间件 Traefik Middlewares 的配置 (k3s)
    系统环境:  Traefik版本:v2.2.0Kubernetes版本:K3s1.23.6一、什么是TraefikTraefik是一款开源的边缘路由器,现在本人主要要作用于kubernetes中对外的网关,即Ing......
  • 28. JS DOM(文档对象模型)
    1.前言文档对象模型(DocumentObjectModel,简称DOM),是一种与平台和语言无关的模型,用来表示HTML或XML文档。文档对象模型中定义了文档的逻辑结构,以及程序访问和操作文......
  • Redis和Lombok的下载安装
    下载地址:下载界面:下载好之后进行安装安装界面下一步安装路径的改动默认下一步继续下一步安装点击完成这是我们的安装目录最简单的启动方式是直接双......
  • Ribbon 功能区 - MFC
    概述本教程适用于正在开发桌面应用程序并希望利用新的MFC功能区框架优势的MFC开发人员。通过本教程的步骤,您将了解如何将默认的功能区添加到一个小应用程序中,在Ribbo......
  • token与cookie的区别?(token是如何避免CSRF攻击?)
    链接:https://blog.csdn.net/m0_37138074/article/details/125628352一、token与cookie的区别?1.1、cookie是浏览器用来存储本地信息的文件(4KB);token(令牌)是由服务器按一定算......
  • word2vec 论文讲解 - b站深度之眼
    https://www.bilibili.com/video/BV1A7411u7zh?p=4&vd_source=db1f7cb82e86cfc9050cdc20ec10c8ab前置知识one-hotSVD(SingularValueDecomposition)奇异值分解Distrib......
  • 对行列式 第一公理化的一点思考
      1.为什么正则化是E? ......
  • 函数参数和名称空间
    函数参数之位置参数"""补充:当子代码只有一行并且很简单的情况下可以直接在冒号后编写不用换行"""位置形参 函数定义阶段括号内从左往右依次填写的变量名 deffunc......