【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否则也就失去了封装的意义。