
6.适配器模式(Adapter Pattern)
透明化调用:客户端通过适配器可以无缝调用目标接口,用户感知不到接口的不兼容。 代码复用:现有类库不需要修改,程序员可以通过新增适配器类来重用已有的代码,这大大降低了修改代码的成本。 降低耦合度:适配器可以把目标类和适配者类解耦,解决了接口不匹配的问题。 支持开闭原则:在很多业务场景下,适配器模式是支持开闭原则的有效方式。 开发复杂度增加:适配器需要根据具体业务场景进行深入的分析和设计,系统的复杂性会因此增加。 可读性问题:过多的适配器会挡住代码的可读性,增加阅读难度,可能导致代码变得凌乱。 维护难度:每个适配器都需要针对特定的接口进行处理,一旦目标接口发生改动,相应的适配器也需要进行调整。
发布日期:2021-05-10 05:01:36
浏览次数:27
分类:精选文章
本文共 1882 字,大约阅读时间需要 6 分钟。
适配器模式
在日常生活中,我们经常会遇到需要使用不同设备的场景。例如,笔记本电脑的充电接口使用的是交流电,而笔记本本身需要供电的是直流电。这就需要通过电源适配器来实现充电。而且,现在很多手机设备取消了耳机接口,想要使用有线耳机不仅需要一块耳机线,但还需要一个从手机充电口转换为3.5mm耳机接口的适配器。这些都是适配器模式的典型应用。
适配器模式的定义
适配器模式的核心意图是将一个类的接口转换成客户端期待的另一个接口。通过适配器模式,原本由于接口不兼容而无法协同工作的那些类可以获得合作的机会。
适配器模式的优点
适配器模式的缺点
适配器模式的代码示例
以下是一个简单的适配器模式实现示例:
namespace _06_AdapterPattern{ class Program { static void Main(string[] args) { IPictrue p = new MyPicture(); IPictrue p1 = new PicAdapter(); p.GetRGB(); p1.GetRGB(); Console.ReadKey(); } } interface IPictrue { void GetRGB(); } class MyPicture : IPictrue { public void GetRGB() { Console.WriteLine("RGB的值分别为:255,255,255"); } } class NewPicture { public void GetR() { Console.WriteLine("红色R为255"); } public void GetG() { Console.WriteLine("绿色G为255"); } public void GetB() { Console.WriteLine("蓝色B为255"); } } class PicAdapter : NewPicture, IPictrue { public void GetRGB() { GetR(); GetB(); GetG(); } }}
代码分析与优化
在以上代码中,MyPicture类实现了IPictrue接口,并提供了GetRGB()
方法,表示它能一次性获取三个颜色的数据。而NewPicture类则提供了单独获取三个颜色的方法(GetR()
、GetG()
、GetB()
)。为了让NewPicture能够适配IPictrue接口,PicAdapter类继承了IPictrue接口,并通过重写GetRGB()方法调用了NewPicture类的三个单独方法。这样既不修改了原有的IPictrue接口,又达到了_argo_接口的需求。
这种设计方式充分体现了适配器模式的优势,同时保持了系统的可扩展性和灵活性。通过引入适配器,原本无法协同工作的类得以充分利用,提高了系统的功能复杂性和适用性。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月25日 16时03分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
A20地址线
2023-01-23
abaqus质量缩放系数取值_ABAQUS的质量缩放
2023-01-23
Accessibility
2023-01-23
08-信息收集之端口收集(总结版)
2023-01-23
15种下载文件的方法&文件下载方法汇总&超大文件下载
2023-01-23
anaconda、python卸载后重装以及anaconda--443
2023-01-23
AWVS工具太顶了,漏洞扫描工具AWVS介绍及安装教程
2023-01-23
CentOS 系列:CentOS 7文件系统的组成
2023-01-23
CSDN----Markdown编辑器
2023-01-23
Docker容器进入的4种方式(推荐最后一种)
2023-01-23
Docker部署postgresql-11以及主从配置
2023-01-23
EnvironmentNotWritableError: The current user does not have write permissions to the target environm
2023-01-23
Hyper-V系列:windows11开启系统自带安卓虚拟机并安装apk包
2023-01-23
Hyper-V系列:微软官方文章
2023-01-23