适配器模式
描述
适配器模式是一种结构型模式,它可以使原本不兼容的接口,互相工作。
适配器模式主要是通过创建适配器类,作用是能够转换对象接口,使其互相交互。将复杂的转换过程封装到适配器中。适配器不仅可以将不同的接口的对象相互合作,也可以用来转换不同格式的数据
结构
- 类适配器 - 通过继承的方式
- 对象适配器 - 通过聚合或组合的方式
涉及原则
合成复用原则
参考1
类适配器
public class AdapterExample1 : MonoBehaviour
{
private void Start()
{
IAttack attack = new AttackAdapter();
CharacterAttack(attack);
}
private void CharacterAttack(IAttack attack) => attack.Attack();
}
public class Enemy
{
public void EnemyAttack()
{
Debug.Log("Enemy Attack");
}
}
public interface IAttack
{
void Attack();
}
public class AttackAdapter : Enemy, IAttack
{
public void Attack()
{
EnemyAttack();
}
}
对象适配器
public class AdapterExample2 : MonoBehaviour
{
private void Start()
{
Cat cat = new Cat();
Dog dog = new Dog();
ICall adapter = new AnimalCall(cat);
Call(dog);
Call(adapter);
}
public void Call(ICall call) => call.Call();
}
public class Cat
{
public void CatCall()
{
Debug.Log("喵,喵,喵");
}
}
public interface ICall
{
void Call();
}
public class Dog : ICall
{
public void Call()
{
Debug.Log("汪,汪,汪");
}
}
public class AnimalCall : ICall
{
private Cat _cat;
public AnimalCall(Cat cat)
{
_cat = cat;
}
public void Call()
{
_cat.CatCall();
}
}