桥接模式里到底哪个是抽象类接口,哪个是实现类接口,这两个接口有什么区别?

image.png
关于这张图,我从网上查和书上查了很多资料,说法都不相同,

有的地方说Shape是实现类接口,Rectangele和Circle是对Shape接口的实现,说Drawing是对Shape的更高级抽象,所以Drawing是抽象类接口。

有的地方说Shape是抽象类接口,是对Rectangle和Circle的抽象,而Drawing是为具体实现画画的方法提供的接口,所以Drawing是实现类接口。

这个图到底应该怎么分析啊,每个类都是什么类啊,也查不到一个统一的说法,能查到的分析说法感觉都很含糊,大概能意会,但出现分歧时又无法确定。

PS:还有一点不明白的就是,抽象类我知道是个什么东西,但抽象类接口是个啥?网上书上都搜不到,反正大概能明白是什么意思,但也说不出来是什么东西。

阅读 2.9k
3 个回答

我觉得是你想得过于复杂了,桥接模式仅仅就是将类的部分功能抽象并独立出来,方便修改和维护而已。比如你这个类图,一个shape ,抽象图形,可能是矩形,也可以是圆形,抽象方法,画出它的过程draw。矩形有一套笔画方法,圆形也有一套笔画方法,他们不相同。所以把绘画的过程抽象成一个接口,让实现者自己去实现。shape 只负责draw。至于具体要怎么画,把它聚合进shape 就行了,让drawing 来完成。

这个网站有设计模式的介绍,我觉得非常不错。
https://refactoringguru.cn/de...

Drawing,Shape看箭头指向就知道谁大谁小啊

看箭头方向不就可以知道了啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题