菜鸟也疯狂之适配器模式
适配器故名思议就是起适配的作用,现实生活中我们常常看到各种适配器,电源适配就是一个很好的例子,而在代码层面上是如何表示的呢?我们先来一个假设,假设你的项目代码中有一个名为AClass的类,里边已实现了你的各种逻辑,现在来一个需求要你调用同事B写好的IBClass接口来实现一个AClass中已经写好的功能,此时,你会怎么做呢?不妨先暂停阅读思考一番,我这边代码先走起,文章的结尾会加以阐述:
public class ShiPQ : MonoBehaviour
{
// Use this for initialization
void Start ()
{
IBClass adapta = new Apadat();
adapta.NewDoSomething();
}
}
/// <summary>
/// 这是已经存在的类
/// </summary>
public class AClass
{
public void DoSomething()
{
Debug.Log("这里是已经存在的逻辑");
}
}
/// <summary>
/// 这是已有的接口
/// </summary>
public interface IBClass
{
void NewDoSomething();
}
/// <summary>
/// 适配器类:将AClass和IBClass结合在一起使用
/// </summary>
public class Apadat : AClass, IBClass
{
public void NewDoSomething()
{
base.DoSomething();
}
}
可以看到,客户端完成了实现了一种操作就是:把一个类的接口变换成客户端所期待的另一种接口(客户端使用了IBClass接口对现有的AClass类进行包裹(Wrap)使得复用了AClass中的代码,同时也形成了一个新的接口,而客户端需要调用的就是这个新的接口,ps:体现的是用全新接口复用已有代码的思想),从而使原本接口不匹配而无法一起工作的两个类能够在一起工作,这就是适配器模式的定义。然而,我这边之给出了类的适配器模式的代码,实际还有一种叫做对象适配器的模式,有兴趣的小伙伴可以自行查阅资料看看代码是如何实现的,实现起来特别容易,估计很多小伙伴经常使用对象适配器模式却浑然不知,可要记得查阅哟。