博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSharp设计模式读书笔记(7):适配器模式(学习难度:★★☆☆☆,使用频率:★★★★☆)...
阅读量:6708 次
发布时间:2019-06-25

本文共 1638 字,大约阅读时间需要 5 分钟。

适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

模式角色与结构:

对象适配器:

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CSharp.DesignPattern.AdapterPattern{    class Program    {        static void Main(string[] args)        {            Adaptee adaptee = new Adaptee();            Target target = new Adapter(adaptee);            target.Request();            Console.ReadLine();        }    }    class Adapter : Target    {        private Adaptee adaptee;        public Adapter(Adaptee adaptee)        {            this.adaptee = adaptee;        }        public void Request()        {            adaptee.Operation();        }    }    interface Target    {        void Request();    }    class Adaptee    {        public void Operation()        { }    }}

类适配器:

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CSharp.DesignPattern.AdapterPattern{    class Program    {        static void Main(string[] args)        {            Target target = new Adapter();            target.Request();            Console.ReadLine();        }    }    class Adapter : Adaptee, Target    {        public void Request()        {            this.Operation();        }    }    interface Target    {        void Request();    }    class Adaptee    {        public void Operation()        { }    }}

由于Java、C#等语言不支持多重类继承,因此类适配器的使用受到很多限制,例如如果目标抽象类Target不是接口,而是一个类,就无法使用类适配器;此外,如果适配者Adapter为最终(Final)类,也无法使用类适配器。在Java等面向对象编程语言中,大部分情况下我们使用的是对象适配器,类适配器较少使用

双向适配器:

 

 

示例代码:

 

转载于:https://www.cnblogs.com/thlzhf/p/3993334.html

你可能感兴趣的文章
用Perl在终端上打印彩色字符
查看>>
MongoDB相关操作
查看>>
暴力探测蓝牙设备工具redfang
查看>>
Learn Beautiful Soup(4)—— 一个简单抓取图书信息的例子
查看>>
手机gps无法定位的解决方案
查看>>
使用ORACLE 透明数据加密 TDE
查看>>
IDEA编译的优化:不用每次make
查看>>
我的友情链接
查看>>
kafka 的原理介绍
查看>>
轻松学会Java高并发第一课-并发的基本概念
查看>>
Flutter 底部导航——BottomNavigationBar
查看>>
linux内核协议栈TCP time_wait原理、配置、副作用
查看>>
IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数
查看>>
android之数据库和Content Provider(二)
查看>>
Java调用Https
查看>>
验证码cnn模型
查看>>
quartz CronTrigger表达式整理
查看>>
用户定位 User Location
查看>>
图文混排 文字垂直居中对齐
查看>>
Qt Socket简单通信
查看>>