tank.h
tank.cpp
TankImplement.h
TankImplement.cpp
main.cpp
Bridge模式的意义在于“将类的抽象部分和实现部分分离,使他们可以独立的变化”。这里抽象的含义并不是具体子类对抽象基类中虚函数的实现,而是指通过继承的方式来‘实现’用户的需求。例如,对于上面的程序,如果通过继承的方式来实现,那么就需要WindowsChinaTank,LinuxChinaTank,WindowsJapanTank,LinuxJapanTank这四个类。如果想在Android上运行,那么还需要通过继承的方式添加AndroidChinaTank和AndroidJapanTank这两个新类,更让人烦躁的是增加了继承关系的复杂度。如果用Bridge模式,我们只需要增加一个AndroidTankImpl就可以了,接下来就可以通过组合的方式获得我们想要的类型了。实际上Bridge模式就是通过组合的方式去实现一个功能需求。面向对象的一个重要的原则就是"Favor Composition Over Inheritance"。