Builder是一种创建设计模式,它允许逐步构建复杂的对象。
Builder设计模式与Fluent Interface习惯用法不同,尽管 Rust 开发人员有时会互换使用这些术语。
- Fluent Interface idiom 是一种使用以下方法链接构造或修改对象的方法的方法: let car = Car::default().places(5).gas(30). 它对于构造对象非常有用。不过,它不是 Builder。
- Builder是一种具有共同构建trait但具有不同构建实现的模式。同时,Fluent Interface 可以与 Builder 模式一起使用,以获得更好的代码设计。
在此示例中,trait Builder定义了如何组装汽车。但是,根据构建器的实现,构造的对象可以是汽车,也可以是汽车手册。
mod car; |
构造目标是创建两种不同产品:
car.rs:
use crate::{ |
汽车手册本:car_manual.rs
下面是Builder模式这个结构的导演、指导者:
director.rs:
use crate::{ |
下面看看builder设计模式的客户端调用,看看通过 builder这个结构赋能了客户端多大自由性?
#![allow(unused)] |
参考:Java的设计模式之Builder
总结
Builder模式主要是用于创建复杂目标对象,这个目标对象内部有复杂的Complicated内部结构和组件,是一个大群体,一般用于DDD中创建聚合根对象。