“将抽象与实现分类,使二者可以独立变化”
独立变化是指不破坏开闭原则的“闭”,即对原有代码不做一切改变,但是可以对外开放,也就是可以新增类的方式来扩展,但是又不会影响其他类。
桥接模式是一个比较难运用的模式,但是套路还是有的,据我所理解的就是多数用在两个不同群组之间,例如:角色人物类 和 武器类, 角色人物拥有武器Weapon,而Weapon是一个接口,可以有A武器,B武器,C武器等等,这些后期扩展N个武器都OK,均不会影响到角色人物,而角色人物类也是一个接口,可以有Q人物,W人物,E人物等等,后期一样可以扩展N个人物,均不会影响到武器类。
上图中,ICharacter是角色人物接口 ,其实现类Q,W,E人物我都没画出来而已,IWeapon是武器类接口。
角色人物的Fire(ICharacter)方法就是调用IWeapon的DoFire方法实现开枪功能的,将ICharacter传入IWeapon是为了获取攻击属性或扣除子弹数等逻辑。