(精华)2020年8月13日 C#基础知识点 23种设计模式(结构型模式---适配器模式)

/// <summary>
/// 适配器模式
/// </summary>
public class Program
{
    public static void Show()
    {
        {
            Console.WriteLine("*************************");
            IHelper helper = new MysqlHelper();
            helper.Query<Program>();
            helper.Delete<Program>();
            helper.Add<Program>();
            helper.Update<Program>();
        }
        {
            Console.WriteLine("*************************");
            IHelper helper = new SqlserverHelper();
            helper.Query<Program>();
            helper.Delete<Program>();
            helper.Add<Program>();
            helper.Update<Program>();
        }
        {
            Console.WriteLine("*************************");
            IHelper helper = new OracleHelper();
            helper.Query<Program>();
            helper.Delete<Program>();
            helper.Add<Program>();
            helper.Update<Program>();
        }
        //关系型数据库不能满足诉求,启用Redis,ServiceStack-SDK---第三方类库没有实现IHelper接口,适配redis
        {
            Console.WriteLine("*************************");
            IHelper helper = new RedisHelperInherit();//类适配器
            helper.Query<Program>();
            helper.Delete<Program>();
            helper.Add<Program>();
            helper.Update<Program>();
        }
        {
            Console.WriteLine("*************************");
            IHelper helper = new RedisHelperObject();//对象适配器
            helper.Query<Program>();
            helper.Delete<Program>();
            helper.Add<Program>();
            helper.Update<Program>();
        }
    }
}
/// <summary>
/// 数据访问接口
/// </summary>
public interface IHelper
{
    void Add<T>();
    void Delete<T>();
    void Update<T>();
    void Query<T>();
}
public class MysqlHelper : IHelper
{
    public void Add<T>()
    {
        Console.WriteLine("This is {0} Add", this.GetType().Name);
    }
    public void Delete<T>()
    {
        Console.WriteLine("This is {0} Delete", this.GetType().Name);
    }
    public void Update<T>()
    {
        Console.WriteLine("This is {0} Update", this.GetType().Name);
    }
    public void Query<T>()
    {
        Console.WriteLine("This is {0} Query", this.GetType().Name);
    }
}
//其他几个Helper类似不多说
/// <summary>
/// 第三方提供的  openstack  servicestack
/// 不能修改
/// </summary>
public class RedisHelper
{
    public RedisHelper()
    {
        Console.WriteLine($"构造RedisHelper");
    }
    public void AddRedis<T>()
    {
        Console.WriteLine("This is {0} Add", this.GetType().Name);
    }
    public void DeleteRedis<T>()
    {
        Console.WriteLine("This is {0} Delete", this.GetType().Name);
    }
    public void UpdateRedis<T>()
    {
        Console.WriteLine("This is {0} Update", this.GetType().Name);
    }
    public void QueryRedis<T>()
    {
        Console.WriteLine("This is {0} Query", this.GetType().Name);
    }
}
/// <summary>
/// 第三方提供的  openstack  servicestack
/// 不能修改
/// </summary>
public class RedisHelperInherit : RedisHelper, IHelper
{
    public RedisHelperInherit()
    {
        Console.WriteLine($"构造RedisHelperInherit");
    }
    public void Add<T>()
    {
        base.AddRedis<T>();
    }

    public void Delete<T>()
    {
        base.DeleteRedis<T>();
    }

    public void Update<T>()
    {
        base.UpdateRedis<T>();
    }

    public void Query<T>()
    {
        base.QueryRedis<T>();
    }
}
/// <summary>
/// 第三方提供的  openstack  servicestack
/// 不能修改
/// </summary>
public class RedisHelperObject : IHelper
{
    //属性/字段注入 写死的 不可能空
    private RedisHelper _RedisHelper = new RedisHelper();
    public RedisHelperObject()
    {
        Console.WriteLine($"构造RedisHelperInherit");
    }
    public void Add<T>()
    {
        this._RedisHelper.AddRedis<T>();
    }
    public void Delete<T>()
    {
        this._RedisHelper.DeleteRedis<T>();
    }
    public void Update<T>()
    {
        this._RedisHelper.UpdateRedis<T>();
    }
    public void Query<T>()
    {
        this._RedisHelper.QueryRedis<T>();
    }
}

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/107982365