简介:
适配器模式的意图是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
可作为两个不兼容的接口之间的桥梁。例如两个插头想插在三个插头的插座上,需要转接头。
介绍:
| 目标角色(Target) | 定义Client使用的与特定领域相关的接口。 |
| 被适配角色(Adaptee) | 定义一个已经存在并已经使用的接口,这个接口需要适配。 |
| 适配器角色(Adapter) | 适配器模式的核心。它将对被适配Adaptee角色已有的接口转换为目标角色Target匹配的接口。对Adaptee的接口与Target接口进行适配。 |
1.对象适配器

| 优点 |
1.“对象组合”方式符合松耦合。 2.在不更改现有代码的基础上复用现有类,符和“开闭原则”。 |
| 缺点 | 1.如果需要适配器(Adapter)适配被适配器(Adaptee)的子类方法,需要实例化相应的子类。 |
2.类适配器

| 优点 |
1.无需实例化被适配器(Adaptee)的实例。 2.在不更改现有代码的基础上复用现有类,符和“开闭原则”。 |
| 缺点 |
1.采用了“多继承”,即适配器类同时继承接口和抽象类,带来了高耦合。 2.由于没有实例化被适配器(Adaptee),所以无法直接适配相应子类的功能。 |
使用:
本案例的意思是想画一个正方形(目标),但是只有画圆的工具,需要考虑圆规代替笔(被适配器),用转化的圆规画圆(适配器)。
//对象适配器
//目标角色
public abstract class SquareDraw
{
public abstract void Draw();
}
//被适配角色
public class CircleDraw
{
public void Convert()
{
//do something
}
}
//适配角色
public class SquareDrawAdapter : SquareDraw
{
private CircleDraw circleDraw = new CircleDraw();
public override void Draw()
{
circleDraw.Convert();
//do something
}
}
//类适配器
//目标角色
public interface SquareDraw
{
void Draw();
}
//被适配角色
public abstract class CircleDraw
{
public void Convert()
{
//do something
}
}
//适配角色
public class SquareDrawAdapter : CircleDraw, SquareDraw
{
public void Draw()
{
this.Convert();
//do something
}
}
//适配器模式调用-客户角色
SquareDraw squareDraw = new SquareDrawAdapter();
squareDraw.Draw();
2793

被折叠的 条评论
为什么被折叠?



