设计模式-适配器模式

简介: 设计模式-适配器模式

定义是什么?

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。

优点

该模式的主要优点如下。

● 客户端通过适配器可以透明地调用目标接口。

● 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。

● 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。

● 在很多业务场景中符合开闭原则。

构成

适配器模式(Adapter)包含以下主要角色。

  1. 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
  2. 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
  3. 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。

结构图

类适配器模式的结构图如图 1 所示。

图1 类适配器模式的结构图

对象适配器模式的结构图如图 2 所示。

图2 对象适配器模式的结构图

代码

类适配器写法

static void Main(string[] args) 
        {
            Console.WriteLine("类适配器模式测试");
            Target target = new ClassAdapter();
            target.request();
        }
        //目标接口
        interface Target
        {
            public void request();
        }
        //适配器接口
        class Adaptee
        {
            public void specificRequest()
            {
                Console.WriteLine("适配者中的业务代码被调用");
            }
        }
        //继承类实现接口  然后再重写接口方法的时候调用咱们继承的方法
        class ClassAdapter : Adaptee, Target
        {
            public void request()
            {
                specificRequest();
            }
        }

对象适配器

static void Main(string[] args)
        {
            Console.WriteLine("对象适配器模式测试:");
            Adaptee adaptee =  new Adaptee();
            Target target = new ObjectAdapter(adaptee);
            target.request();
        }
           interface Target
        {
            public void request();
        }
        //适配器接口
        class Adaptee
        {
            public void specificRequest()
            {
                Console.WriteLine("适配者中的业务代码被调用");
            }
        }
        class ObjectAdapter : Target
        {
            private Adaptee adaptee;
            public ObjectAdapter(Adaptee adaptee)
            { 
                this.adaptee = adaptee;
            }
            //实现接口
            public void request()
            {
              adaptee.specificRequest();
            }
        }


相关文章
|
8月前
|
设计模式 Java API
重构旧代码的秘诀:用设计模式 - 适配器模式(Adapter)给Java项目带来新生
【4月更文挑战第7天】适配器模式是解决接口不兼容问题的结构型设计模式,通过引入适配器类实现目标接口并持有不兼容类引用,实现旧代码与新接口的协作。适用于处理兼容性问题、整合遗留代码和集成第三方库。应用时,识别不兼容接口,创建适配器类转换方法调用,然后替换原有引用。注意保持适配器简单、使用组合和考虑扩展性。过度使用可能导致系统复杂和维护成本增加,应谨慎使用。
118 4
|
8月前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
119 4
|
17天前
|
设计模式 JSON 前端开发
前端必须掌握的设计模式——适配器模式
适配器模式是一种结构型设计模式,用于使接口不兼容的对象能够相互合作。通过在客户端和系统之间引入一个“中间层”适配器,将不同类型的输入数据转换为系统能处理的标准格式,减轻系统的负担,提高扩展性和可维护性。例如,MacBook的扩展坞将多种接口(如HDMI、USB)转换为Type-C接口,实现多接口兼容。
|
4月前
|
设计模式 Java 程序员
Java设计模式-适配器模式(8)
Java设计模式-适配器模式(8)
|
8月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
|
3月前
|
设计模式 Java
Java设计模式之适配器模式
这篇文章详细讲解了Java设计模式中的适配器模式,包括其应用场景、实现方式及代码示例。
59 0
|
4月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
5月前
|
设计模式 XML 存储
【六】设计模式~~~结构型模式~~~适配器模式(Java)
文章详细介绍了适配器模式(Adapter Pattern),这是一种结构型设计模式,用于将一个类的接口转换成客户期望的另一个接口,使原本不兼容的接口能够一起工作,提高了类的复用性和系统的灵活性。通过对象适配器和类适配器两种实现方式,展示了适配器模式的代码应用,并讨论了其优点、缺点以及适用场景。
|
7月前
|
设计模式
适配器模式-大话设计模式
适配器模式-大话设计模式
|
6月前
|
设计模式 Go 数据处理
iLogtail设计模式问题之在iLogtail中,为何需要使用适配器模式
iLogtail设计模式问题之在iLogtail中,为何需要使用适配器模式