您的位置:首页 > 编程语言 > Java开发

java设计模式----建造者模式

2015-12-17 16:53 507 查看
建造者模式使用场景:将复杂的实现与应用进行分离。主要有四个类:产品类(Product)、建造抽象类(Builder)、建造实现类(ConcreteBuilder)、指挥者类(Director)。建造者模式仅仅只比工厂模式多了一个“指挥类”的角色。在建造者模式图中,假如把这个指挥类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——指挥类。

产品类

package build;

public class Product {
private String food;
private String water;
public Product() {
}
public Product(String food, String water) {
this.food = food;
this.water = water;
}
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public String getWater() {
return water;
}
public void setWater(String water) {
this.water = water;
}

}


抽象建造者类:这个类中有抽象的产品建造方法和抽象的产品返回方法

package build;

public interface Builder {
public void  eat();
public void drink();
public Product getProduct();
}


具体建造者类

package build;

public class ConcreteBuilder implements Builder{
Product product=new Product();

@Override
public void eat() {
product.setFood("面包");
}

@Override
public void drink() {
product.setWater("依云矿泉水");
}

@Override
public Product getProduct() {
return product;
}

}


指挥者类:构建一个使用Builder接口的对象, 负责调用适当的建造者来组建产品,导演类一般不与产品类发生依赖关系,与导演类直接交互的是建造者类。一般来说,导演类被用来封装程序中易变的部分。

package build;

public class Director {
private Builder builder;
//传入构建对象
public Director(Builder builder){
this.builder=builder;
}
//实现构建
public void construct(){
this.builder.eat();
this.builder.drink();
}

}


客户端类测试

package build;

public class Client {
public static void main(String[] args) {
//创建实例
Builder builder=new ConcreteBuilder();
//传入实例
Director director=new Director(builder);
//构建
director.construct();
//获取产品
Product product=builder.getProduct();
//获取结果
System.out.println(product.getFood());
System.out.println(product.getWater());
}

}


结果

面包
依云矿泉水
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: