GoF定义:
“将抽象与实现分离,使二者可以独立的变化”
游戏中,经常有这么一种情况
基类角色类(ICharacter),下面有子类士兵类(ISoldier)、敌军类(IEnemy)
基类武器类(IWeapon),下面有子类枪类(IGun)、炮类(ICannon)
当然,有用枪的士兵,有用炮的士兵
这么一组合,就是2*2 = 4个类
游戏后期,当角色类添加一个角色类时,变成了2*3 = 6个类
若再添加一个武器类,3*3 = 9个类
类成倍数增长
维护起来也就越来越困难
这种两个类群组之间,“交叉组合汇编”的情况
桥接模式是一种解决方法
群组一类中的每一个类,可以使用“群组二类”中的每一个类来实现所定义的功能
using UnityEngine; public abstract class IWeapon{ public abstract void DamageValue(ICharacter character); } public class IGun : IWeapon { public override void DamageValue(ICharacter character) { Debug.Log("Gun"); } } public class ICannon : IWeapon { public override void DamageValue(ICharacter character) { Debug.Log("Cannon"); } } public abstract class ICharacter { protected IWeapon m_Weapon = null; public void SetWeapon(IWeapon theWeapon) { m_Weapon = theWeapon; } public abstract void InstantiateCharacter(); } public class ISoldier : ICharacter { public override void InstantiateCharacter() { m_Weapon.DamageValue(this); } } public class IEnemy : ICharacter { public override void InstantiateCharacter() { m_Weapon.DamageValue(this); } }
上面代码只为演示桥接模式设计思想使用
若想使用到自己的工程中
还需结合自己工程写出代码
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【Unity3D与23种设计模式】桥接模式(Bridge) - Python技术站