读书笔记14:适配器模式
2015-07-30 13:05
316 查看
1、 概念
将一个类的接口转换成另外一个 用户希望的接口,解决由于接口不兼容而不能一起工作类,能一起工作。
2、 模型
Target——客户端希望的接口。
NeedAdapter——新增的类,没有实现Target接口。由于客户端只认Target的一系列方法,所以NeedAdapter没法在客户端使用。
Adapter——适配器,实现Target接口,并负责当调用Target时,能调用NeedAdapter的方法。
模型图:
//原始的接口
[csharp] view
plaincopyprint?
public abstract class Target
{
public abstract void Request();
}
//需要用适配器的类,它有自己的方法,但是却不想继承或Target
[csharp] view
plaincopyprint?
public class NeedAdapter
{
public void UnusaulRequest()
{
Console.WriteLine("用户端需要像调用Target一样调用NeedAdapter,可是NeedAdapter又不方便去实现或继承Target");
}
}
//适配器类,继承自Target,并且负责把NeedAdapter经过处理,使当调用Target的法时,去调用NeedAdapter的方法。
[csharp] view
plaincopyprint?
public class Adapter : Target
{
private NeedAdapter needAdapter = new NeedAdapter();
public override void Request()
{
needAdapter.UnusaulRequest();
Console.WriteLine("使用适配器类,依然在客户端调用Target的方法,但是实际调用了NeedAdapter的方法,");
}
}
调用
[csharp] view
plaincopyprint?
static void Main(string[] args)
{
Target target = new Adapter();
target.Request();
Console.ReadKey();
}
适配器得到了应用。
将一个类的接口转换成另外一个 用户希望的接口,解决由于接口不兼容而不能一起工作类,能一起工作。
2、 模型
Target——客户端希望的接口。
NeedAdapter——新增的类,没有实现Target接口。由于客户端只认Target的一系列方法,所以NeedAdapter没法在客户端使用。
Adapter——适配器,实现Target接口,并负责当调用Target时,能调用NeedAdapter的方法。
模型图:
//原始的接口
[csharp] view
plaincopyprint?
public abstract class Target
{
public abstract void Request();
}
//需要用适配器的类,它有自己的方法,但是却不想继承或Target
[csharp] view
plaincopyprint?
public class NeedAdapter
{
public void UnusaulRequest()
{
Console.WriteLine("用户端需要像调用Target一样调用NeedAdapter,可是NeedAdapter又不方便去实现或继承Target");
}
}
//适配器类,继承自Target,并且负责把NeedAdapter经过处理,使当调用Target的法时,去调用NeedAdapter的方法。
[csharp] view
plaincopyprint?
public class Adapter : Target
{
private NeedAdapter needAdapter = new NeedAdapter();
public override void Request()
{
needAdapter.UnusaulRequest();
Console.WriteLine("使用适配器类,依然在客户端调用Target的方法,但是实际调用了NeedAdapter的方法,");
}
}
调用
[csharp] view
plaincopyprint?
static void Main(string[] args)
{
Target target = new Adapter();
target.Request();
Console.ReadKey();
}
适配器得到了应用。
相关文章推荐
- 【转】 依赖注入框架Autofac的简单使用
- linux mint sublime3的c编译环境配置
- MySQL函数
- java 方法对 二、八、十、十六进制之间的转换
- 读书笔记13:状态模式
- Treap树(并查集 + 树堆)POJ —— 2985 The k-th Largest Group
- 如何成为一名黑客
- python main
- 1029. 旧键盘(20)
- 使用cmake配置qt项目时利用openmp
- 读书笔记12:观察者模式
- 高效Linux之autojump的安装、配置与使用
- 进程,创建,vfork
- Azure 执行模型
- python自动化安装源码软件包
- 读书笔记11:建造者模式
- jquery报表
- Java之重载与覆盖
- 部门询证函
- [MySQL优化案例]系列 — 分页优化