建立型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。redis
1 public interface IHelper 2 { 3 void Add<T>(); 4 void Delete<T>(); 5 void Update<T>(); 6 void Query<T>(); 7 }
二、子类MysqlHelper、OracleHelper、SqlserverHelper继承了IHelper,并实现IHelper接口sql
三、如今有类RedisHelper,他有四个方法增删改查设计模式
1 public void AddRedis<T>() 2 { 3 Console.WriteLine("This is {0} Add", this.GetType().Name); 4 } 5 public void DeleteRedis<T>() 6 { 7 Console.WriteLine("This is {0} Delete", this.GetType().Name); 8 } 9 public void UpdateRedis<T>() 10 { 11 Console.WriteLine("This is {0} Update", this.GetType().Name); 12 } 13 public void QueryRedis<T>() 14 { 15 Console.WriteLine("This is {0} Query", this.GetType().Name); 16 }
四、问题来了,发现RedisHelper方法跟IHelper方法不太适配,为了跟IHelper适配,就须要适配器模式函数
五、这里适配器模式有两种学习
①、类适配器模式优化
新建一个RedisHelperClass类来继承RedisHelper和IHelper,此时RedisHelperClass至关于适配器this
1 public class RedisHelperClass : RedisHelper, IHelper 2 { 3 public void Add<T>() 4 { 5 base.AddRedis<T>(); 6 } 7 8 public void Delete<T>() 9 { 10 base.DeleteRedis<T>(); 11 } 12 13 public void Update<T>() 14 { 15 base.UpdateRedis<T>(); 16 } 17 18 public void Query<T>() 19 { 20 base.QueryRedis<T>(); 21 } 22 }
②、对象适配器模式RedisHelperObject,经过构造函数传递一个RedisHelperspa
1 public class RedisHelperObject : IHelper 2 { 3 //private RedisHelper _RedisHelper = new RedisHelper(); 4 private RedisHelper _RedisHelper = null; 5 public RedisHelperObject(RedisHelper redisHelper) 6 { 7 this._RedisHelper = redisHelper; 8 } 9 10 public RedisHelperObject() 11 { 12 this._RedisHelper = new RedisHelper(); 13 } 14 15 public void Add<T>() 16 { 17 this._RedisHelper.AddRedis<T>(); 18 } 19 20 public void Delete<T>() 21 { 22 this._RedisHelper.DeleteRedis<T>(); 23 } 24 25 public void Update<T>() 26 { 27 this._RedisHelper.UpdateRedis<T>(); 28 } 29 30 public void Query<T>() 31 { 32 this._RedisHelper.QueryRedis<T>(); 33 } 34 }
总结:适配器模式,有类适配器模式和对象适配器模式,在上面的例子里RedisHelperClass和RedisHelperObject都充当了适配器的角色,前者经过继承的关系,使RedisHelperClass和MysqlHelper、OracleHelper、SqlserverHelper进行了适配,后者经过组合对象,进行了适配设计
以上是本人经过学习,去理解和总结的,若是有什么不当之处,还请大牛指正!代理