创建型设计模式-建造者模式
2017-03-02 17:25
337 查看
建造者模式:
将一个对象的构建和表示分离,使得同样的构建过程可以创建不同的表示
建造者模式参与角色:
抽象建造者builder:给出一个抽象接口,规范建造者对于生产的产品的各个组成部分的建造
具体建造者:实现builder接口,构建和装配产品各个部件,定义并明确它所创建的表示,提供一个返回这个产品的接口
指挥者Director:构建一个使用builder接口的对象,负责管理整个产品的流程
产品角色Product:被构建的复杂对象,具体建造者创建该产品的内部表示并定义它的装配过程,它包含定义组成部件的类,包括这些部件装配成最终产品的接口
指挥者角色:Director
产品角色:Product
抽象建造者:AbstractBuilder
具体建造者角色:
测试代码:
结果:
![](https://img-blog.csdn.net/20170302172001654?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZzE0NjQ2NTc2MjU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
通俗解释:
汽车厂(指挥者)准备生产某型汽车,然后将零部件变速箱(产品)下单给汽车零部件供应商A/B(建造者),然后汽车零部件供应商A/B按照汽车厂的规范组装胜场生产变速箱,最后生产的产品交给汽车厂使用
将一个对象的构建和表示分离,使得同样的构建过程可以创建不同的表示
建造者模式参与角色:
抽象建造者builder:给出一个抽象接口,规范建造者对于生产的产品的各个组成部分的建造
具体建造者:实现builder接口,构建和装配产品各个部件,定义并明确它所创建的表示,提供一个返回这个产品的接口
指挥者Director:构建一个使用builder接口的对象,负责管理整个产品的流程
产品角色Product:被构建的复杂对象,具体建造者创建该产品的内部表示并定义它的装配过程,它包含定义组成部件的类,包括这些部件装配成最终产品的接口
指挥者角色:Director
public class Director { public void Build(AbstractBuilder builder){ builder.BuilderA(); builder.BuliderB(); } }
产品角色:Product
public class Product { List<String> list=new ArrayList<String>(); //产品的部件集合 /** * 表示配件装配过程 * @param partName 产品部件名称 */ public void add(String partName){ list.add(partName); } public void show() { for(String str:list){ System.out.println(str); } } }
抽象建造者:AbstractBuilder
public abstract class AbstractBuilder { //构建部件B public abstract void BuilderA(); //构建部件A public abstract void BuliderB(); //取出产品 public abstract Product getProduct(); }
具体建造者角色:
public class ConcreteBuilderA extends AbstractBuilder { private Product product = new Product(); //构建的目标对象 @Override public void BuilderA() { product.add("A建造者正在组装产品A部件....."); } @Override public void BuliderB() { product.add("A建造者正在组装产品B部件....."); } @Override public Product getProduct() { //提供返回构建的目标对象的方法 return product; } }
public class ConcreteBuilderB extends AbstractBuilder { private Product product=new Product(); @Override public void BuilderA() { product.add("B建造者正在组装产品A部件....."); } @Override public void BuliderB() { product.add("B建造者正在组装产品B部件....."); } @Override public Product getProduct() { return product; } }
测试代码:
Director director = new Director(); //指挥者:负责产品部件的整个生产流程 //调用A建造者生产产品 AbstractBuilder builder = new ConcreteBuilderA(); director.Build(builder); //制定负责整个产品生产的建造者 Product product=builder.getProduct(); //获取建造者生产的产品 product.show(); System.out.println("-------------------"); //调用B建造者生产产品 builder = new ConcreteBuilderB(); director.Build(builder); product = builder.getProduct(); product.show();
结果:
通俗解释:
汽车厂(指挥者)准备生产某型汽车,然后将零部件变速箱(产品)下单给汽车零部件供应商A/B(建造者),然后汽车零部件供应商A/B按照汽车厂的规范组装胜场生产变速箱,最后生产的产品交给汽车厂使用
相关文章推荐
- 设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- 从FLC中学习的设计模式系列-创建型模式(4)-建造者
- 设计模式5——创建型模式之建造者模式
- 23种设计模式2--创建型模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式)
- java设计模式——创建型之建造者模式
- GoF23种设计模式之创建型模式之建造者模式
- java-设计模式(创建型)-【建造者模式】
- 创建型设计模式-建造者设计模式
- 设计模式(三):建造者模式Builder(创建型模式)
- 设计模式(4)-创建型-建造者(Builder)(个人笔记)
- 创建型设计模式(5):建造者模式
- 【转】设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- 设计模式6:建造者模式【创建型】
- PHP设计模式:创建型之建造者(Builder)
- 设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- [设计模式-创建型]建造者(Builder)
- [设计模式-创建型]建造者(Builder)
- 设计模式理解(三)创建型——建造者
- 设计模式 - 创建型模式 - 建造者模式
- 23种设计模式四:创建型建造者模式