[设计]适配器模式

来源:互联网 发布:用淘宝联盟赚钱安全吗 编辑:程序博客网 时间:2024/06/08 17:45

[设计]适配器模式

场景

  • 雷达数据是从服务端传过来的,但是历史和实时的数据结构不太一样,但是这样操作数据要么重载但是处理过程基本一样,所以这时间每个都写两个方法维护成本太高
  • 所以这里想把实时数据适配成历史的

解决方法

  1. 可以让实时和历史都继承自同一个父类,C# 不支持多继承所以可能要用接口,这是继承这种强聚合关系也会使后期的维护成本提高。也就是传说中的类适配的方式。这里不采用
  2. 所以这里采用对象适配的方式,也就是说让适配器和目标对象可以达到里氏替换。方法很多同一个接口,同一个父类,这里是最简单的直接继承目标对象,这种组合的方式要强于继承的方式。
  3. 在适配器里做要适配的工作。
    • 我们创建要适配的原类我目标类
 class HistoryData    {        public void HisrtoryFunction()        {            Console.WriteLine("这是历史数据");        }    }    class RealData    {        public virtual void RealFunction()        {            Console.WriteLine("这是实时数据");        }    }
  • 我们再创建一个适配器类
class AdapteTarget:RealData    {        public HistoryData hisdata = new HistoryData();        public override void RealFunction()        {            hisdata.HisrtoryFunction();        }    }
  • 之后我们可以这样用
  static void Main(string[] args)        {            RealData rd = new AdapteTarget();            rd.RealFunction();            Console.Read();        }

类图

  • 占坑

注意

  1. 适配器肯定影响效率,所以不要过多的使用。
  2. 是不是符合开闭原则
  3. 是不是可以重新定义一些我要要适配类的行为和功能属性,所有你能感知到的信息
  4. 一般就是用接口不适用,或者想建立一个可以重复使用的类。
    源码
    原文地址

相信自己选的路,一直走下去,有过迷茫有不放弃,但是要坚持到底,并且越快越好