书作者表示,桥接模式是他认为最好应用也是最难理解的。
看完本章后,无疑感叹桥接模式的伟大。确实是非常好用的一种模式~
一般来说用在
抽象与实现分离的情况
比如有许多形状,需要支持draw。有几种引擎,可以实现render,但代码不同。
为了方便扩展,那么让各个形状继承于抽象形状类。并各自在自己的draw_real中调用父类draw。
而父类draw也早就获得了引擎子类,子类重写父类的render方法->引用到自己带的代码中。
两个群组因为功能上的需求需要合作但又想各自发展无关对方
就是书里的情况【人物】和【武器】的互相搭配。
- 父类武器、父类人物
- 父类人物创建时获得一个武器子类
- 父类人物可以调用父类武器手上的fire方法(叫fire_real)
- 有各种人物继承父类人物,在attack方法中调用fire_real方法。
- 有各种武器继承父类武器,只需要重写实现自己的fire方法。
- 以上。哦,别忘了人物set_weapon。这样weapon可以获得自己的所有者。【全用传的呢?不过先获得的话会方便一些功能的实现】
在这个例子中,父类人物就是抽象类,它定义了攻击目标的工作,却没有实现。父类武器实现了这个FIRE,是所谓的实现类。
设计模式有点像是思想中的印子。你在思考时,可以用这种方式辅助来思考关系,方便实现。
*结论
p117页提到可以实现
1. 行动载具设计。
嗯……实现方法大概是父类人物获得一个载具子类。通过抽象的【骑】来调用载具子类中的【被骑】方法。子类重写实现父类的【被骑】方法。结束。最早的例子中,还需要传入fire的target。这里好像暂时没有这个target要处理。毕竟骑马的时候不是为了要影响其他的东西吧?
2. 角色施展法术。
角色可以有很多种法术、比如治疗、比如火系。实现的方法是角色获得一个法术类。然后有抽象方法:释放法术。法术子类继承法术类并实现释放的情况。这是最简单的一种。看看以后怎么和其他模式结合吧,毕竟法术什么的可以无数种。
本文深入探讨桥接模式的应用场景及其实现方式,通过人物与武器、形状与引擎等实例,阐述如何实现抽象与实现的分离,以及该模式在行动载具设计和角色施展法术等功能扩展中的作用。
1610

被折叠的 条评论
为什么被折叠?



