rust实现wss访问_Rust 是面向对象的语言吗?

45cb798b92d81d7f267530c611cb1436.png

面向对象编程 ,就是常说的OOP,主要就是搞对象了。一个 对象 包含数据和操作这些数据的过程。这些过程 通常被称为 方法 或 操作。

就这个定义来说,Rust 是面向对象的。结构体和枚举包含数据, impl 块提供了在结构体和枚 举之上的方法。 在rust里,没有专门的class,这个在其它语言里看腻的词,它用strust 和 enum 。

OOP还有个特性: 用封装来隐藏实现细节 ,这个Rust可以做到。看例子吧,注意,凡是没有pub的都是私有的函数:

# pub struct AveragedCollection {
#     list: Vec<i32>,
#     average: f64, 
#}
//注意这个结构,结构前加了pub. 并不意味着,里面的所有项都可以随意访问
//如果能随便访问,封装就没有意义了

 
impl AveragedCollection {
    pub fn add(&mut self, value: i32) {
        self.list.push(value);
        self.update_average();
    }

    pub fn remove(&mut self) -> Option<i32> {
        let result = self.list.pop();
        match result {
            Some(value) => {
                self.update_average();
                Some(value)
            }
            None => None,
        }
    }

    pub fn average(&self) -> f64 {
        self.average
    }

    fn update_average(&mut self) {
        let total: i32 = self.list.iter().sum();
        self.average = total as f64 / self.list.len() as f64;
    }
} 

OOP特征二:继承

一个对象可以定义为继承另一个对象的定义,这使其可以获得父对象的数据和行为,而无需重新定义。 继承的目的之一:代码重用,rust可以使用 train 方法来进行代码共享。 继承的目的之二:多态或多重类型系统。这个可以通过train 的impl 实现。没什么好说的了。

关于共享和继承的优劣,我是这样认为的,继承增加了子类与父类的耦合度和复杂性,这种全盘继承有时甚至是危险的。而共享让模块之间的关系变得简单和低耦合。

尤其现在是网上模块库的时代,用哪个块共享就行了。这其实让事情变得简单了。

想象一下,那些单继承,多继承,有时会象乱麻一样,让代码混乱不堪。

进一步观察。我觉得继承模型有点类似人情社会。你想跟儿子合作,你不得不考虑曾经揍过他爹。而共享模型象契约共享社会,需要什么网购就行了,管他那么多爹干嘛呢。

适度的认知模型可以让程序猿的工作轻松一点。

一天后补:今天看到二句,感觉和我昨天说的很一致,摘抄如下:

模块间耦合越少越好,继承是最深度的耦合。

“四人帮”的《设计模式》开宗明义:组合优于继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值