GoF定义:

“将抽象与实现分离,使二者可以独立的变化”

游戏中,经常有这么一种情况

基类角色类(ICharacter),下面有子类士兵类(ISoldier)、敌军类(IEnemy)

基类武器类(IWeapon),下面有子类枪类(IGun)、炮类(ICannon)

当然,有用枪的士兵,有用炮的士兵

【Unity3D与23种设计模式】桥接模式(Bridge)

这么一组合,就是2*2 = 4个类

游戏后期,当角色类添加一个角色类时,变成了2*3 = 6个类

若再添加一个武器类,3*3 = 9个类

类成倍数增长

维护起来也就越来越困难

这种两个类群组之间,“交叉组合汇编”的情况

桥接模式是一种解决方法

群组一类中的每一个类,可以使用“群组二类”中的每一个类来实现所定义的功能

【Unity3D与23种设计模式】桥接模式(Bridge)

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);
     }
 }

上面代码只为演示桥接模式设计思想使用

若想使用到自己的工程中

还需结合自己工程写出代码