Rust 面向对象

发布时间: 更新时间: 总字数:497 阅读时间:1m 作者: IP上海 分享 网址

面向对象的特征:命名对象、封装、继承

介绍

Rust 是面向对象的:

  • 避免将 structenum 包含数据、impl 块提供方法称为对象,因为它们是分开的

  • Rust 中 trait 称为对象,因为它们某种程度上组合了数据与行为,但无法为 trait 对象添加数据

  • 封装:调用对象外部的代码无法直接访问对象内部的实现细节,唯一可以与对象进行交互的方法就是通过它的公开(pub) API

  • 继承:使对象可以沿用另外一个对象的数据和行为,且无需重复定义相关代码

  • Rust 没有继承(现在很多新语言都不实用继承作为内置程序设计)

    • Rust 默认使用 Trait 方法来进行代码共享
    • 为共有行为定义一个 trait
    • 其中,使用 Trait 对象执行时是 动态派发(dynamic dispatch)
    • Rust 对象必须保证对象安全(object-safe),规则如下:
      • 方法的返回值类型不是 &self
      • 方法不包含任何泛型类型参数
  • 多态:Rust 泛型和 trait 约束限定参数化多态(bounded parametric)

    • Vec<Box<dyn Clone>>

状态模式

状态模式(state pattern) 是一种面向对象设计模式:一个值拥有的内部状态由数个状态对象(state object)表达而成,而值的行为则随着内部状态的改变而改变

状态模式的缺点:

  • 某些状态之间是相互耦合的
  • 需要重复实现一些逻辑代码
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数