建造者模式(Java + 实际案例)

关注微信公众号:程序驴,获取更多学习资料

何为建造者模式

建造者模式一般用于构建一个由多个简单对象构成的复杂对象。比如一台完整的汽车对象,其中可能需要:

  • 车体框架对象
  • 车门对象
  • 车窗对象
  • 发动机对象
  • ……

其实不同的汽车品牌,他用到的某个部件可能是来自不同的厂家,但是汽车的构造过程是大差不差的,也就是同样的构造模式可以创建不同的对象。如果构造汽车这一过程完全由人操控,在程序中体现就是你需要写很多的set方法(例如下面这样)

Car mycar = new Car();
	mycar.setBody("钛合金进口车架");
	mycar.setDoor("防弹车门");
	mycar.setEngine("双瓦轮增压发动机")
// ............    

最终才能得到一种汽车,而建造者模式简化了这一过程,建造者模式对某一种特定的复杂对象提供了专门构造他的Builder方法,该Builder方法类似于将所有set方法进行了单独的封装,使得Builder方法最终可以直接提供出我们需要的那一种汽车,比如下面:

public Class mycarBuilder extends carBuilder{
    public void buildBody(){
        mycar.setBody("钛合金进口车架");
    }
    
    public void buildDoor(){
      	mycar.setDoor("防弹车门");  
    }
    
    public void buildEngine(){
       mycar.setEngine("双瓦轮增压发动机") 
    }
    
    public Car getCar(){
        return mycar;
    }
}

实战案例

汽车对我们有点遥远,我们拿平时吃快餐这件事做例子:快餐店通常会提供多种多样的套餐,一份套餐通常会包含主食、小吃、饮品,算是一个复杂对象,不同的食物搭配组成不同的套餐。

套餐类

image-20240524171408663

偷懒直接用String了,实际还应该设计主食类,小吃类,饮品类等。

套餐构建抽象类

image-20240524171552919

A套餐Builder

image-20240524171636367

B套餐Builder

image-20240524171727737

两种建造者会直接返回对应的套餐类型

套餐指挥类

image-20240524171900267

通过传入的建造者类型,获得对应对象。

BuilderMain

image-20240524172002094

运行结果

image-20240524172023450

所有设计模式源码已上传至gitee,地址:https://gitee.com/linfeng-show/design_pattern_-master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值