建造者模式是一种创建型设计模式,适用于在对象创建的过程中,需要构建一系列复杂对象的情况。它通过将复杂对象的构建过程分离出来,使得相同的构建过程可以创建不同的对象实例,且易于扩展和修改。
下面我们通过一个实例来认识建造者模式。
案例描述:
一个快餐店需要制作不同的汉堡,例如:鸡肉汉堡、牛肉汉堡等。每个汉堡都有不同的配料(例如:奶酪、生菜等),不同的汉堡由于配料的不同,价格也不同。
分析:
在这个案例中,汉堡作为复杂对象,其构建过程可以分为两个部分,一个是选择餐品(例如:鸡肉汉堡、牛肉汉堡等),另一个是选择配料(例如:奶酪、生菜等)。
对于选择餐品这一步骤,我们可以将其抽象为一个Builder接口:
```
public interface BurgerBuilder {
void createNewBurger();
void addMeat();
}
```
对于选择不同的配料,我们可以为每个餐品都实现一个具体的Builder,例如:
```
public class ChickenBurgerBuilder implements BurgerBuilder {
private Burger burger;
public void createNewBurger() {
burger = new Burger();
burger.setType("鸡肉汉堡");
}
public void addMeat() {
burger.setPrice(10.0);
}
public void addCheese() {
burger.setPrice(burger.getPrice() + 1.0);
}
public void addLettuce() {
burger.setPrice(burger.getPrice() + 0.5);
}
public Burger getBurger() {
return burger;
}
}
```
在具体的Builder中,我们可以依次添加不同的配料,并在getBurger方法中返回最终构建好的汉堡对象。
通过使用建造者模式,我们可以很方便地创建不同种类的汉堡,并且在添加或删除一种汉堡时,不需要改变客户端代码。
扫码咨询 领取资料