适配器模式
1 为什么看完总觉得怪怪的。适配器使用的情况是,之前写的一套流程,只有一种数据结构,和一种处理方法。后来有了另外的数据结构,另外的数据结构有自己的处理方法,这个时候想要在同一个调用类里面调用同一个方法,该方法使用另外的数据结构,仍能正常运行。我认为好像就是多了一些if判断罢了啊,,,如果是数据结构1,则执行方法1,如果是数据结构2,则执行方法2,
2 适配器是开发过程中出现的情况,为了减少原框架变动而采取的方案。它不是搭建框架的过程使用,而是在框架运用,项目开发过程使用。
3 适配的本质就是原来有一种东西,后来要加入另外一种东西,然后为了用同样的方式使用,于是要把不一样的地方,想办法把它变成跟原来那种东西看起来一样,实际上可能一样也可能不一样。
public interface ICard
{
int cardType { get; set; }
string GetInfo();
string ReadCard();
}
public class MicroCard : ICard
{
public string Info = "info from microcard";
public int cardType { get; set; }
public MicroCard()
{
cardType = 1;
}
//原来的调用方法
public string ReadCard()
{
return Info;
}
public string GetInfo()
{
return "";
}
}
public class SDCard :ICard
{
public string info = "info from SDCard";
public int cardType { get; set; }
public SDCard()
{
cardType = 2;
}
//另外一种调用方法
public string GetInfo()
{
return info;
}
public string ReadCard()
{
return "";
}
}
public class CardAdapter
{
ICard card;
int cardType;
public CardAdapter(ICard card)
{
if(card.cardType ==1)
{
this.card = new MicroCard();
}
else if (card.cardType == 2)
{
this.card = new SDCard();
}
}
public string ReadCard()
{
if(cardType == 1)
{
return card.ReadCard();
}else if(cardType == 2)
{
return card.GetInfo();
}
else
{
return "";
}
}
}
public class Computer
{
//这个是原来的调用方法
public string ReadCardMsg(MicroCard card)
{
return card.ReadCard();
}
//这个是适配后的调用方法
public void ReadCardMsg(ICard card)
{
CardAdapter adapter = new CardAdapter(card);
adapter.ReadCard();
}
}