组合优于继承
2026/9/25小于 1 分钟RustRust
Rust一直有一个思想:“组合优于继承”。一直不理解到底是怎么一回事,现在终于弄明白了。
起因是:我想自写一个按钮组件,支持丰富的动画。作为懒省事的人,必然是能少写代码就尽量少写的。于是一个问题随之而来:按钮和动画,到底是什么关系?
最开始想的是用Trait实现,但转念一想:按钮有各种子类,比如播放按钮、搜索按钮等。如果用Trait,就必须为它们一个个实现动画方法,不划算。并且Trait与java的Interface类似,是契约式设计。它需要有实现者和消费者。既然按钮自己实现自己的动画,自己再消费掉自己的动画,那就没必要弄一个Trait了。约束+Animator struct即可。
