image.png
在构建一个在线订餐平台时,我们需要处理各种不同的订单项,包括不同类型的菜品、饮料以及可能的特别要求。订单构建过程需要灵活地适应不同的定制选项。
肖哥弹架构 跟大家“弹弹” 设计模式,需要代码关注
欢迎 点赞,点赞,点赞。
关注公号Solomon肖哥弹架构获取更多精彩内容
2. 为什么要使用建造者模式
建造者模式允许用户通过一系列步骤来定制订单,同时保持代码的清晰和组织性。这使得添加新的订单项或定制选项变得更加容易。
3. 标准建造者模式图

4. 业务建造者模式图
image.png
5. 业务代码参考
// 订单项接口
interface OrderItem {
void prepare();
}
// 具体订单项实现
class Meal implements OrderItem {
private String dishType;
private int quantity;
private List<String> toppings;
// Constructor, getters and setters
public void prepare() {
// 准备餐点逻辑
}
}
class Beverage implements OrderItem {
private String drinkType;
private String size;
private boolean ice;
// Constructor, getters and setters
public void prepare() {
// 准备饮料逻辑
}
}
// 订单建造者
class OrderBuilder {
private List<OrderItem> orderItems = new ArrayList<>();
private String deliveryTime;
public OrderBuilder addOrderItem(OrderItem item) {
orderItems.add(item);
return this;
}
public OrderBuilder setDeliveryTime(String time) {
this.deliveryTime = time;
return this;
}
public Order build() {
Order order = new Order();
order.setOrderItems(orderItems);
order.setDeliveryTime(deliveryTime);
return order;
}
}
// 订单类
class Order {
private List<OrderItem> orderItems;
private String deliveryTime;
// Constructor, getters and setters
// 准备订单中的所有项
public void prepareOrder() {
for (OrderItem item : orderItems) {
item.prepare();
}
}
}
// 客户端使用建造者模式构建订单
public class OrderSystem {
public static void main(String[] args) {
Order order = new OrderBuilder()
.addOrderItem(new MealBuilder()
.setDishType("牛肉面")
.setQuantity(2)
.addTopping("香菜")
.build())
.addOrderItem(new BeverageBuilder()
.setDrinkType("可乐")
.setSize("大杯")
.addIce(true)
.build())
.setDeliveryTime("12:00")
.build();
order.prepareOrder();
}
}
6. 使用建造者模式的好处
建造者模式将订单的构建过程封装起来,使得构建复杂对象(如包含多个订单项的订单)变得更加灵活和易于管理。它的好处包括:
- 灵活性:可以很容易地添加新的订单项或定制选项。
- 解耦:客户端代码不需要知道订单项的具体构建细节。
- 可维护性:集中管理订单的构建逻辑,便于维护和扩展。
7. 其他使用建造者模式场景参考
建造者模式适用于需要构建具有多个可选配置的复杂对象的任何场景,例如:
- 用户配置文件:允许用户设置不同的偏好设置。
- 复杂的查询构建器:在数据库操作中构建复杂的查询。
8. 可参考开源框架
- Apache Commons Builder:提供了一系列方便的建造者类,用于创建复杂对象。
总结
建造者模式为构建复杂对象提供了一种清晰和灵活的方法,使得代码易于理解和维护,同时支持对象构建过程的扩展。
历史热点文章
- 外观模式(Facade Pattern):微服务架构中的数据库访问实战案例分析
- 代理模式(Proxy Pattern):权限校验API调用实战案例分析
- 桥接模式(Bridge Pattern):多样式用户界面组件实战案例分析
- 组合模式(Composite Pattern): 在线教育平台课程管理实战案例分析
- 享元模式(Flyweight Pattern):网页游戏中的角色对象管理实战案例分析
- 观察者模式(Observer Pattern):股票交易系统实战案例分析
- 策略模式(Strategy Pattern):电商平台的优惠券系统实战案例分析
- 模板方法模式(Template Method Pattern):视频播放应用实战案例分析
- 命令模式(Command Pattern):网络爬虫任务队列实战案例分析
- 迭代器模式(Iterator Pattern):电商平台商品分类浏览实战案例分析
- 中介者模式(Mediator Pattern):即时通讯软件实战案例分析
- 备忘录模式(Memento Pattern):游戏存档系统实战案例分析
- 状态模式(State Pattern):电商平台订单状态管理实战案例分析
- 责任链模式(Chain of Responsibility Pattern):电商平台的订单审批流程实战案例分析
- 访问者模式(Visitor Pattern):电商平台商品访问统计实战案例分析
- 工厂方法模式(Factory Method Pattern): 电商多种支付实战案例分析
- 抽象工厂模式(Abstract Factory Pattern):多风格桌面应用实战案例分析
- 建造者模式(Builder Pattern): 在线订单系统实战案例分析
- 原型模式(Prototype Pattern): 云服务环境配置实战案例分析
- 适配器模式(Adapter Pattern):第三方支付集成实战案例分析
- 装饰器模式(Decorator Pattern):电商平台商品价格策略实战案例分析
- 单例模式(Singleton Pattern):购物车实战案例分析