-
Adapter Pattern
属于结构型模式,adapter 可以使由于接口不兼容而不能交互的类可以一起工作 -
adapter Pattern : 优点是将target类和adaptee类解耦,增加了类的透明性和复用性,同时系统的灵活性和扩展性都非常好,更换adapter或者增加新的adapter都非常方便,符合“开闭原则”;
-
adapter pattern : 缺点是adapter类在很多编程语言中不能同时适配多个adaptee类,
-
对象adapter模式的缺点是很难置换adaptee类的方法。
-
adapter 模式适用情况包括:系统需要使用现有的类,而这些类的接口不符合系统的需要;想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类一起工作。
-
对象适配器模式—代码示例
/*
* adapter 适配器模式:
* 在对象adapter模式中,adapter类继承了target类并定义了一个adaptee类的对象实例,
* 在所继承的target类方法中调用adaptee类的相应业务方法。
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace Pattern01
{
class Program
{
static void Main(string[] args)
{
///在客户类中针对target类进行编程,调用在target类中定义的业务方法
Target target = new Adapter();
target.Request();
Console.ReadKey();
}
}
/// <summary>
/// target class 目标抽象类定义客户要用的特定领域的接口;
/// </summary>
class Target
{
public virtual void Request()
{
Console.WriteLine("called target Request()");
}
}
/// <summary>
/// adapter类可以调用另一个接口,作为一个转换器,对adaptee和target进行适配,它是adapter模式的核心
/// /// </summary>
class Adapter : Target
{
private Adaptee _adaptee = new Adaptee();
public override void Request()
{
//call adaptee specificRequest
_adaptee.SpecificRequest();
}
}
/// <summary>
/// adaptee类是被适配的角色,它定义了一个已经存在的接口,这个接口需要适配
/// </summary>
class Adaptee
{
public void SpecificRequest()
{
Console.WriteLine("called specificRequest()");
}
}
}