桥接模式非常适合于换装系统,比如说什么野蛮人拿斧子,野蛮人拿木棒,野蛮人拿钉头槌,弓箭手拿弓箭,弓箭手拿十字弓,弓箭手拿火枪……多了去了的组合,都可以用桥接模式实现。
使用方法非常简单,但是最好在设计整个系统前想好了,而不是之后修改。
首先,创建一个武器的接口:
namespace BridgePattern { interface IWeapon { void OperationImpl(); } }
然后,新建一个武器,实现这个接口:
namespace BridgePattern { class WeaponA : IWeapon { public void OperationImpl() { } } }
武器有了,新建一个Man类,这是所有角色的基类:
namespace BridgePattern { abstract class Man { protected IWeapon iWeapon; public Man(IWeapon iWeapon) { this.iWeapon = iWeapon; } public void Operation() { iWeapon.OperationImpl(); } } }
新建Archer类(弓箭手),代码如下:
namespace BridgePattern { class Archer : Man { public Archer(IWeapon iWeapon) : base(iWeapon) { } public void OtherOperation() { } } }
我们看,Man组合了IWeapon,在使用它的东西,这样,桥接模式搭建完成。
另:像洛克人这种人与武器是一对多的关系,可以考虑用装饰者模式,把武器当成装饰,装饰给洛克人,具体在这篇文章不详细讨论。