适配器模式 C#
2015-11-17 15:17
405 查看
适配器模式
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
● Target目标角色:该角色定义把其他类转换为何种接口,也就是我们的期望接口。
● Adaptee源角色:你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。
● Adapter适配器角色:适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建立的,它的职责非常简单:把源角色转换为目标角色,怎么转换?通过继承或是类关联的方式。
适配器模式的使用场景
适配器应用的场景只要记住一点就足够了:你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口,怎么办?使用适配器模式,这也是我们例子中提到的。
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
● Target目标角色:该角色定义把其他类转换为何种接口,也就是我们的期望接口。
● Adaptee源角色:你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。
● Adapter适配器角色:适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建立的,它的职责非常简单:把源角色转换为目标角色,怎么转换?通过继承或是类关联的方式。
/// <summary> /// 目标角色 /// </summary> public interface Target { void request(); } /// <summary> /// 目标角色实现类 /// </summary> public class ConcreteTarget : Target { public void request() { Console.WriteLine("Concrete1"); } } /// <summary> ///源角色 /// </summary> public class Adaptee { public void dosomething() { Console.WriteLine("hi"); } } /// <summary> /// 适配器角色 /// </summary> public class Adapter : Adaptee, Target { public void request() { base.dosomething(); } }
static void Main(string[] args) { Target target = new ConcreteTarget(); target.request(); target = new Adapter(); target.request(); }
适配器模式的使用场景
适配器应用的场景只要记住一点就足够了:你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口,怎么办?使用适配器模式,这也是我们例子中提到的。
相关文章推荐
- C#_序列化
- C# Attributes(特性)
- Repeater 此属性不存在
- C# 将PDF文件转换为word格式
- C# 将PDF文件转换为word格式
- C# 使用Vlc播放视频或者监控
- C#关于DateTime得到的当前时间的格式和用法
- C#支付宝扫码支付代码完整版
- C# 用Attribute实现AOP事务
- (转)C# 选择正确的集合
- C#基础--多线程
- [CLR via C#读后整理]-1.CLR的执行模型
- (C#基础)各种加密学习
- c# 程序突然 让win7系统屏幕不能休眠了
- C#中WinForm控件的跨线程更新,如何使用Invoke
- C#模拟web请求,使用post提交带有文件的数据表单
- C# \\u8888类型的unicode转换为字符串方法
- C# 泛型简介
- C#引用传递
- C# 判断值类型的几种方法