【Rust设计模式之新类型模式】

Rust设计模式之新类型模式


前言

类型驱动一节中有提及过新类型模式,新类型模式是类型驱动的一种方式,主要是通过新类型的封装让使用者不用考虑原来类型的细节,也保证了privacy,从而避免不必要的bug,如开发者的误操作将输入性数据修改等等。


代码


#[derive(Debug)]
struct People {
    name: String,
    age: u32,
    address: String,
}

impl People {
    pub fn new(name: String, age: u32, address: String) -> Self {
        People { name, age, address }
    }
}

// 新类型
#[derive(Debug)]
pub struct Student(People);

impl Student {
    pub fn new() -> Self {
        Student(People::new(
            "buddy".to_string(),
            20,
            "queenstreet".to_string(),
        ))
    }

    pub fn show(&self) {
        println!("{:?}", self);
    }
}

fn main() {
    let b = Student::new();
    b.show();
}

总结

新类型模式通常情况下直接使用元组结构体将本来的类型转换为一目了然的名称,借助元组结构体内部元素不可见性,保护内部元素不被修改,同时也降低了开发者的思考难度,需要注意的是,正是因为开发者借助了元组结构体的内部不可见性,在实现时不要再将内部元素设置为pub否则也就失去了封装的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值