建造者模式-简单介绍01

建造者模式(Builder Pattern)是一种创建型设计模式,其主要目的是将一个复杂对象的构建过程和其表示分离,使得同样的构建过程可以创建不同的表示。在该模式中,构建者对象负责构建对象的各个部分,而指挥者对象则负责统一构建流程并返回构建好的对象。

在Java中,建造者模式通常包含以下几个角色:

  1. 产品角色(Product):需要创建的复杂对象。

  2. 抽象建造者角色(Builder):定义创建产品各个部件的接口,负责对象的构建过程。

  3. 具体建造者角色(ConcreteBuilder):实现建造者接口,实现各个部件的构建,并返回构建好的产品。

  4. 指挥者角色(Director):负责统一构建流程,即按照某种顺序调用建造者来创建产品。

使用建造者模式可以有效地简化复杂对象的创建过程,使得代码更加清晰易懂,同时也可以方便地扩展和维护代码。

以下是一个简单的示例,使用建造者模式来创建一个食品订单:

首先,定义一个食品订单对象:

public class FoodOrder {
    private String burger;
    private String fries;
    private String drink;
    private String dessert;

    public void setBurger(String burger) {
        this.burger = burger;
    }

    public void setFries(String fries) {
        this.fries = fries;
    }

    public void setDrink(String drink) {
        this.drink = drink;
    }

    public void setDessert(String dessert) {
        this.dessert = dessert;
    }

    // other methods
}

然后,定义一个抽象建造者接口:

public interface FoodOrderBuilder {
    public void addBurger(String burger);
    public void addFries(String fries);
    public void addDrink(String drink);
    public void addDessert(String dessert);
    public FoodOrder getFoodOrder();
}

接下来,定义具体的建造者实现:

public class SimpleFoodOrderBuilder implements FoodOrderBuilder {
    private FoodOrder foodOrder;

    public SimpleFoodOrderBuilder() {
        this.foodOrder = new FoodOrder();
    }

    public void addBurger(String burger) {
        this.foodOrder.setBurger(burger);
    }

    public void addFries(String fries) {
        this.foodOrder.setFries(fries);
    }

    public void addDrink(String drink) {
        this.foodOrder.setDrink(drink);
    }

    public void addDessert(String dessert) {
        this.foodOrder.setDessert(dessert);
    }

    public FoodOrder getFoodOrder() {
        return this.foodOrder;
    }
}

最后,编写指挥者角色,在该角色中按照一定的顺序使用建造者对象,创建食品订单:

public class FoodOrderDirector {
    private FoodOrderBuilder builder;

    public FoodOrderDirector(FoodOrderBuilder builder) {
        this.builder = builder;
    }

    public void makeFoodOrder() {
        builder.addBurger("Big Mac");
        builder.addFries("Large Fries");
        builder.addDrink("Coca Cola");
        builder.addDessert("McFlurry");
    }
}

现在,创建食品订单的代码如下:

FoodOrderBuilder builder = new SimpleFoodOrderBuilder();
FoodOrderDirector director = new FoodOrderDirector(builder);
director.makeFoodOrder();
FoodOrder order = builder.getFoodOrder();

通过建造者模式,我们可以在创建食品订单时,通过指挥者角色定义了一定的步骤和顺序,具体的建造者则负责创建订单对象的各个部分。这样就可以有效地实现对象的构建过程和其表示分离,从而使代码更加易懂和维护。

猜你喜欢

转载自blog.csdn.net/qq_43545600/article/details/131303757
今日推荐