【设计模式】适配器模式

目录

概述

优点

缺点

UML类图

示例代码


概述

        适配器模式是一种结构型设计模式,它将一个类的接口转换为另一个类的接口,以便两个接口可以协同工作。适配器模式通常用于将旧的接口转换为新的接口,或将不兼容的接口转换为兼容的接口。

        适配器模式包含三个核心组件:目标接口、适配器和被适配者。目标接口是客户端期望的接口,适配器实现了目标接口,并将客户端的请求转发给被适配者。被适配者是需要被适配的类,它包含客户端不能直接使用的接口。

        适配器模式包含两种类型:类适配器和对象适配器。类适配器通过继承实现适配器,它同时继承了目标接口和被适配者。对象适配器通过组合实现适配器,它包含一个被适配者对象,并实现了目标接口。

优点

        适配器模式的优点在于它可以让两个不兼容的接口协同工作,提高了代码的可复用性和可维护性。适配器模式还可以让代码更加灵活,可以在不修改现有代码的情况下添加新的功能。

缺点

        适配器模式的缺点在于它可能会导致代码的复杂性增加,因为适配器需要实现目标接口,并将客户端的请求转发给被适配者。此外,适配器模式还可能会导致性能损失,因为适配器需要进行额外的转换和处理。

UML类图

        下面是适配器模式的UML类图:

        在UML类图中,Client类使用ITarget接口来访问目标接口,Adapter类实现了ITarget接口,并将客户端的请求转发给被适配者Adaptee。被适配者Adaptee包含客户端不能直接使用的接口。

 

示例代码

        下面是类适配器模式的示例代码:

public interface ITarget
{
    void Request();
}

public class Adaptee
{
    public void SpecificRequest()
    {
        Console.WriteLine("Adaptee.SpecificRequest");
    }
}

public class Adapter : Adaptee, ITarget
{
    public void Request()
    {
        SpecificRequest();
    }
}

public class Client
{
    static void Main()
    {
        ITarget target = new Adapter();
        target.Request();
    }
}

        在上面的示例代码中,ITarget是目标接口,Adaptee是被适配者,Adapter是适配器。Adapter继承了Adaptee,并实现了ITarget接口。在Adapter的Request方法中,将客户端的请求转发给被适配者的SpecificRequest方法。

        下面是对象适配器模式的示例代码:

public interface ITarget
{
    void Request();
}

public class Adaptee
{
    public void SpecificRequest()
    {
        Console.WriteLine("Adaptee.SpecificRequest");
    }
}

public class Adapter : ITarget
{
    private readonly Adaptee _adaptee;

    public Adapter(Adaptee adaptee)
    {
        _adaptee = adaptee;
    }

    public void Request()
    {
        _adaptee.SpecificRequest();
    }
}

public class Client
{
    static void Main()
    {
        Adaptee adaptee = new Adaptee();
        ITarget target = new Adapter(adaptee);
        target.Request();
    }
}

        在上面的示例代码中,Adapter是适配器,它包含一个被适配者对象Adaptee,并实现了目标接口ITarget。在Adapter的Request方法中,将客户端的请求转发给被适配者的SpecificRequest方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值