Unity适配器模式

适配器的原理

把一个"接口不兼容"的类,包装成"我现在需要的接口",让原本不能一起工作的代码能够协同工作。

一、生活化理解

你现在用的是 国标插座

你买了一个 美标插头的电器

它们功能没问题,但接口不匹配。

你不会改墙,也不会拆电器,而是:

加一个转换头(适配器)

插头 ← 适配器 → 插座

原设备完全不动

使用方也无需改逻辑

这就是适配器模式的核心思想。

二、适配器模式解决什么问题?

已有类功能正确,但接口不符合当前系统需求

不能/不想修改已有代码(第三方库、旧代码)

希望系统对外暴露统一接口

1.定义你要使用的新攻击接口

cs 复制代码
public interface IAttack
{
    void Attack();
}

2.旧版的攻击使用方法

cs 复制代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OldWeapon
{
    public void Fire()
    {
        Debug.Log("老武器开火!");
    }
}

3.适配器

适配器中持有旧版攻击方法的引用,当玩家像调用新的攻击方法那样调用攻击方法的时候会自动帮玩家执行旧版的攻击方法。

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WeaponAdapter : IAttack
{
    private OldWeapon oldWeapon;

    public WeaponAdapter(OldWeapon weapon)
    {
        oldWeapon = weapon;
    }
    public void Attack()
    {
        // 接口转换
        oldWeapon.Fire();
    }
}

4.使用

当你要使用旧的攻击方法的时候直接创建一个适配器并把旧的攻击方法传入进去即可,无需修改旧版的攻击方法任何代码。

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AdapterUser : MonoBehaviour
{
    void Start()
    {
        IAttack weapon = new WeaponAdapter(new OldWeapon());
        weapon.Attack();
    }
}

5.结果

总结

适配器模式的本质,并不是"多写一层代码",

而是在不破坏已有系统的前提下,让新旧代码能够和平共处

在实际开发中,尤其是游戏项目里:

  • 旧系统往往已经稳定运行

  • 重构成本高、风险大

  • 但新需求又必须接入统一接口

这时候,适配器就像一块"缓冲垫",
不改旧逻辑、不影响使用方,却解决了接口不兼容的问题

只要记住一句话就够了:

当你无法(或不该)修改旧代码,却又想让它符合新接口时,适配器模式就是最合适的选择。

相关推荐
惊鸿醉3 小时前
Unity 实战:用讯飞 WebAPI 做一个“说普通话、播方言“的语音程序
unity·c#·游戏引擎·语音识别
略略略咯咯3 小时前
C#Unity
开发语言·unity·c#
AI人工智能+电脑小能手7 小时前
大白话说Java设计模式-34-命令模式(业务实战篇)
java·spring·设计模式·命令模式·异步任务·撤销重做·事务封装
用户202252215069 小时前
字节发布"豆包工作",我从AI PM角度看到的不是功能,是上下文
设计模式
小贺儿开发9 小时前
Unity 局域网遥控幻灯片展示工具 1.0
unity·网络通信·工具·ppt·控制·网页·互动
AI人工智能+电脑小能手10 小时前
大白话说Java设计模式-37-中介者模式(源码剖析篇)
java·设计模式·线程池·中介者模式·源码分析·executor·applicationeventmulticaster
电子科技圈12 小时前
IAR与东软睿驰达成战略合作,强化软件开发效率与生态协作
设计模式·开源·软件工程·软件构建·代码规范·设计规范·代码复审
吴声子夜歌13 小时前
Java面试——设计模式(四)
java·设计模式·面试
WarPigs14 小时前
Unity未激活的物体无法响应事件?
java·unity·游戏引擎
玖玥拾1 天前
Unity3D RPG 入门项目(十一)主角完整战斗、怪物自动刷新、四大类型技能系统
游戏·3d·unity·游戏引擎