`

建造者模式

 
阅读更多

一, 概念

   建造者模式是一个对象的创建模式,将一个产品的内部表现跟产品的生产过程分割开来,

                       从而可以使一个建造过程生成具有不同的内部表象的产品对象。

二, 结构

   

 

  本模式涉及四个角色:

   1),  抽象建造者(Builder):给 出一个抽象接口,以规范产品对象的各个组成成分的建造。

         一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产品对象的是具体建造者 

 2), 具体建造者(ConcreteBuilder)角色:担任这个角色的是与应用程序紧密相关的一些类,

          它们在应用程序调用下创建产品的实例。这个角色要完成的任务包括:

          a.实现抽象建造者Builder所声明的接口,给出一步一步地完成创建产品实例的操作。

          b.在建造过程完成后,提供产品的实例。

 3), 导演者(Director)角色:担任这个角色的类调用具体建造者角色以创建产品对象。

         导演者角色并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者角色。

 4), 产品(Product)角色:产品便是建造中的复杂对象。一般而言,

     一个系统中会有多个的产品类,而且这些产品类并不一定有共同的接口,而完全可以是不相关联的。

  重点:

         1), 建造者(Builder)接口,定义了如何构建各个部件,  了解各个部件的实现及如何装配

          2), 导演者知道如何组建产品, 负责整体构建的算法。

 

  三,使用场景

  1), 生成的产品对象有复杂的内部结构,

             每一个内部成分本身可以是对象 也可以仅仅是一个对象(即产品对象)的一个组成部分。

  2), 生成的产品对象的属性相互依赖。

          建造模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在

          另一个属性被赋值之后才可以被赋值。

  3), 在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。

 

    四, 示例

   

public class Product {

    private String part1;
    private String part2;
    public String getPart1() {
        return part1;
    }
    public void setPart1(String part1) {
        this.part1 = part1;
    }
    public String getPart2() {
        return part2;
    }
    public void setPart2(String part2) {
        this.part2 = part2;
    }
}

  

public interface Builder {
    public void buildPart1();
    public void buildPart2();
    public Product retrieveResult();
}

 

public class ConcreteBuilder implements Builder {

    private Product product = new Product();

    @Override
    public void buildPart1() {
     
     product.setPart1("create part1");
    }

    @Override
    public void buildPart2() {
        
     product.setPart2("create part2");
    }

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

}

 

public class Director {

    private Builder builder;
    /**
     * @param builder 
     */
    public Director(Builder builder){
        this.builder = builder;
    }

    public void construct(){
        builder.buildPart1();
        builder.buildPart2();
    }
}

 

   测试:

   

public class Client {
    public static void main(String[]args){
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        director.construct();
        Product product = builder.retrieveResult();
        System.out.println(product.getPart1());
        System.out.println(product.getPart2());
    }
}

 

总结: 易用于创建复杂对象, 跟工厂模式的区别是一个注重过程,一个是结果.

         在实际过程中,往往会省略导演类. 可参考StringBuilder类

 

 

  • 大小: 34.6 KB
分享到:
评论

相关推荐

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    建造者模式c++实现

    建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一...

    设计模式之建造者模式代码示例

    建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...

    设计模式之建造者模式

    建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...

    建造者模式.pptx

    ### 建造者模式详解 #### 模式介绍 建造者模式(Builder Pattern)是设计模式中的一种,主要用于创建复杂对象。此模式的核心在于将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。简单...

    Java建造者模式源码

    Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加灵活。这种模式通常在需要创建对象的多个部分,并且这些部分可能需要以特定顺序组合时...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

    ios 进阶 建造者模式

    建造者模式,也被称为Director模式,是设计模式中的一种创建型模式。在iOS开发中,尤其是在构建复杂对象或者需要进行定制化组装时,建造者模式显得尤为重要。它将产品的构造过程与产品本身分离,使得创建过程更加...

    建造者模式实例

    建造者模式是一种设计模式,属于创建型模式,它允许我们分步骤构建复杂对象,而无需暴露构造过程。这种模式在IT行业中广泛应用于软件系统中,尤其是当需要创建的对象具有多种可变构造选项时。大众CC是一款知名的轿车...

    C#设计模式之建造者模式

    建造者模式是软件设计模式中的一种,主要用于将复杂的对象构建过程与对象的使用分离,使得同样的构建过程可以创建不同的表示。在C#中,我们可以通过类的继承和接口的使用来实现这一模式。以下是关于“C#设计模式之...

    java 建造者模式

    建造者模式(Builder Pattern)是Java设计模式中的创建型模式之一,它允许我们分步骤创建复杂的对象,通过将构造过程与表示分离,使得同样的构造过程可以创建不同的表示。这种模式通常用于那些具有多种构建方式或者...

    设计模式-建造者模式(讲解及其实现代码)

    建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式,特别是在对象的构建过程比较复杂,需要多个步骤时。在建造者模式中,我们创建一个指导对象(Director),该对象负责组织构建过程,而具体的构建...

    java 建造者模式代码

    建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在Java中,这种模式通常用于构建对象时,尤其是当对象的构造过程复杂,需要多步骤或者允许用户自定义构建过程时...

    qt5编写的建造者模式程序

    【建造者模式】是软件工程中的一个设计模式,属于创建型模式,它隔离了对象的构造过程,并允许用户以步骤化的方式创建复杂对象。在Qt5框架中,我们可以利用其强大的C++支持来实现建造者模式,这对于创建复杂的UI或者...

    c++ 建造者模式实例

    建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现。这就是建造者模式。 建造者模式可以把一个产品的内部表象与产品的生成过程分隔开来,从而可以使一个建造过程就可以生成...

    设计模式例子,观察者模式,建造者模式

    在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...

    建造者模式学习以及与工厂模式的区别

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离。这种模式常用于当一个对象的构建过程复杂且需要多个步骤时,或者当我们希望同一个构建过程...

Global site tag (gtag.js) - Google Analytics