// 参考:
// https://github.com/rust-unofficial/patterns/blob/master/patterns/builder.md
// https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
// https://en.wikipedia.org/wiki/Builder_pattern
use std::io;
// Production
#[derive(Debug)]
struct Car {
wheels: i32,
seats: i32,
color: String
}
// Builder
struct Builder {
car: Car
}
impl Builder {
fn new() -> Builder {
Builder {
car: Car { // default value
wheels: 4,
seats: 5,
color: String::from("black")
}
}
}
#[allow(dead_code)]
fn set_wheels(&mut self, value: i32) -> &mut Builder {
self.car.wheels = value;
self // return self
}
fn set_seats(&mut self, value: i32) -> &mut Builder {
self.car.seats = value;
self // return self
}
fn set_color(&mut self, value: String) -> &mut Builder {
self.car.color = value;
self // return self
}
fn get_car(&mut self) -> io::Result<&Car> {
Ok(&self.car) // return Result
}
}
// Director
fn main() {
let mut builder = Builder::new();
let car = builder.set_seats(7).set_color(String::from("red")).get_car();
println!("{:?}", car)
}
rust--建造者模式
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- Definition Separate the construction of a complex object ...
- 本文大部分内容翻译至《Pro Design Pattern In Swift》By Adam Freeman,一...
- 前言 前两篇文章介绍了单例模式和工厂模式,这两种设计模式实际上都属于软件工程中的创建型模式(Creational ...