1.为什么要用适配器模式
在引入不可修改的第三方类库,并且需要适配原有的接口时,就需要使用适配配器模式。
2.适配器模式的实现
实现要素:
- 目标接口
- 适配者
- 适配器
现有接口 IHelper
/// <summary>
/// 需要适配的接口,不可修改
/// </summary>
public interface IHelper
{
void Add();
void Update();
void Delete();
void Query();
}
接口实现
/// <summary>
/// mysql
/// </summary>
public class MysqlHelper : IHelper
{
public void Add()
{
Console.WriteLine("Mysql 新增");
}
public void Delete()
{
Console.WriteLine("Mysql 删除");
}
public void Query()
{
Console.WriteLine("Mysql 查询");
}
public void Update()
{
Console.WriteLine("Mysql 修改");
}
}
需要适配的类
/// <summary>
/// 适配者,不可修改
/// </summary>
public class RedisHelper
{
public void AddRedis()
{
Console.WriteLine("Redis 新增");
}
public void UpdateRedis()
{
Console.WriteLine("Redis 修改");
}
public void DeleteRedis()
{
Console.WriteLine("Redis 删除");
}
public void QueryRedis()
{
Console.WriteLine("Redis 查询");
}
}
适配器:
- 类适配器
/// <summary>
/// 类适配器
/// </summary>
public class RedisClassAdapter : RedisHelper,IHelper
{
public void Add()
{
base.AddRedis();
}
public void Delete()
{
base.DeleteRedis();
}
public void Query()
{
base.QueryRedis();
}
public void Update()
{
base.UpdateRedis();
}
}
- 对象适配器
/// <summary>
/// 对象适配器
/// </summary>
public class RedisAdapterObject : IHelper
{
private RedisHelper _RedisHelper = null;
public RedisAdapterObject(RedisHelper redisHelper)
{
this._RedisHelper = redisHelper;
}
public RedisAdapterObject()
{
this._RedisHelper = new RedisHelper();
}
public void Add()
{
this._RedisHelper.AddRedis();
}
public void Delete()
{
this._RedisHelper.DeleteRedis();
}
public void Query()
{
this._RedisHelper.QueryRedis();
}
public void Update()
{
this._RedisHelper.UpdateRedis();
}
}
以上便是适配器模式的实现
3.总结一下
类适配器:采用继承的方式,继承有很强的侵入性。
对象适配器:采用组合方式,更加灵活