`
eneasy
  • 浏览: 128369 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

构造者模式

阅读更多
四. 构造者模式
整理自 《java与模式》阎宏编著


1.意图:

    将一个复杂产品对象的构建与它的表示分离,产品的结构和创建过程对客户端保持透明,允许同样的构建过程创建不同的对象表示。

2.类图:
  

3.原理:

    构造者模式将产品的结构和产品的建造过程对客户端隐藏起来,把对构造过程进行指挥的责任和具体构造零件的责任分割开来,达到责任划分和封装的目的。

4.特征:

    a.抽象构造者对象定义一些接口,规范产品对象各个组成部分的构造。这些接口独立应用程序的具体逻辑。

    b.具体构造者实现抽象构造者定义的接口,给出具体的创建产品实例的操作,构造完成后提供产品的实例。

    c.导演者直接与客户端打交道,将客户端创建产品的请求划分为对各个部件的构造请求,再将这些请求委派给具体构造者。
5.说明:
        几种特殊情况:

    a.如果系统只有一个具体构造者,可以省略抽象构造者角色。

    b.在系统只有一个具体构造者情况下,可以同进省略抽象构造者和导演者角色,由具体构造者承担这两种角色。

6.使用案例:

7.代码:

// Builder.java 抽象构造者

public interface Builder

{

      /**

       * Construct part of the complex Product

       */

      void buildPart1();

      void buildPart2();



      /**

       * @return constructed Product

       */

      Product getResult();

}



// ConcreteBuilder.java 具体构造者

public class ConcreteBuilder implements Builder

{

      /**

       * Reference to Product being constructed

       */

      private ConcreteBuilderProduct resultProduct;



      public Product getResult()

      {

           return resultProduct;

      }

    

      public void buildPart1()

      {

           // provide implementation here

       }



    public void buildPart2()

    {

           // TODO Auto-generated method stub   

        }

}



// Director.java 导演者角色

/**

* Manages Product creation using Builder

*/



public class Director

{

      /**

       * Reference to Builder currently used

       */

      private Builder builder;



      public Director(Builder builder)

      {

           this.builder = builder;

      }



      public void construct()

      {

           // somehow manage construction performed with builder

           builder.buildPart1();

           builder.buildPart2();

      }

}



//客户端

public class Client

{

      /**

       * Sample usage of Builder

       */

      public void sampleOperation()

      {

           ConcreteBuilder builder = new ConcreteBuilder();

           new Director(builder).construct();

           Product product = builder.getResult();

      }

}



//具体构造者承担起抽象构造者和导演者角色的代码

public class ConcreteBuilder

{

      /**

       * Reference to Product being constructed

       */

      private ConcreteBuilderProduct resultProduct;



      public Product getResult()

      {

           return resultProduct;

      }

    

      public void buildPart1()

      {       

      }



    public void buildPart2()

    {

      }



    public void construct()

      {

           buildPart1();

           buildPart2();

      }

}
分享到:
评论

相关推荐

    java_构造者模式

    构造者模式是一种设计模式,它属于创建型模式,主要用于复杂对象的构建。在Java中,构造者模式通过隔离实例化过程和对象的构建过程,使得创建对象的过程更加灵活,同时也提高了代码的可读性和可维护性。下面我们将...

    设计模式专题之(四)建造者模式---设计模式建造者模式示例代码(python--c++)

    建造者模式是一种结构型设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式在软件工程中被广泛应用,尤其是在需要构建对象的过程复杂且需要保持构建过程与对象表现分离的...

    java 设计模式试题

    构造者模式的退化是指通过合并创建者(C) 角色来简化构造过程。这种做法减少了不必要的类和方法,使得代码更简洁。 ### 12. 单例模式的实例限制 题目中的“0..1”表示单例类中有不多于一个的实例(B)。这反映了单例...

    JAVA设计模式(建造模式)_视频

    Java设计模式中的建造模式,又称为构造者模式,是一种用于对象构建的创建型设计模式。在软件工程中,当我们需要创建复杂对象时,通常会遇到一个问题:这些对象的构造过程非常繁琐,涉及到多个步骤,而每个步骤都有...

    设计模式(创建型、结构型、行为型)

    5. 构造者模式:该模式提供了一种复杂对象的创建方式,通过分步创建对象的不同部分,满足对象的创建过程中不同的业务逻辑。 优点:可以根据业务逻辑来控制对象的创建过程,满足复杂对象的创建需求。 缺点:需要...

    设计模式精讲设计模式精讲

    创建型设计模式关注对象的创建,如工厂模式、抽象工厂模式和构造者模式,它们提供了一种动态创建对象的方式,增强了系统的灵活性和扩展性。结构型设计模式则关注如何将简单的组件组合成更复杂的结构,比如适配器模式...

    设计模式在mybatis中的应用

    构造者模式将复杂对象的创建过程分解成了多个简单步骤,在创建复杂对象的时候,只需要了解复杂对象的基本属性即可,而不需要关心复杂对象的内部构造过程。 配置解析组合模式将同一类型的多个对象组合成一个树形结构...

    PHP设计模式指南~

    4. **构造者模式**:构造者模式通过分步骤构建复杂对象,允许用户只设置必要的参数,避免使用复杂的初始化方法。 5. **策略模式**:策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。在PHP中...

    Head First 设计模式 源码

    4. **构造者模式**:分离一个对象的构造过程与其表示,使得同样的构造过程可以创建不同的表示。 5. **装饰器模式**:动态地给一个对象添加一些额外的职责,比生成子类更为灵活。 6. **代理模式**:为其他对象提供...

    【设计模式】(八)–创建型模式–建造者模式

    建造者模式【设计模式】(八)–创建型模式–建造者模式建造者模式定义构造者模式的优点构造者模式的使用场景构造者模式和工厂模式区别构造者模式简单实现 建造者模式定义 Separate the construction of a complex ...

    自定义构建者dialog.rar

    本文将深入探讨如何利用Android的Builder模式来实现自定义Dialog,并结合"自定义构建者dialog.rar"中的示例进行解析。 首先,我们需要理解Builder模式。Builder模式是一种创建型设计模式,它提供了一种分步骤创建...

    部分设计模式及代码

    4. **构造者模式**:构造者模式用于创建复杂的对象,通过一步一步构建来隐藏对象构造的复杂性。例如,汽车构造器: ```java public class Car { private Engine engine; private Wheel wheel; public Car...

    设计模式——建造者模式

    - **解耦**:建造者模式将对象的构造过程与使用过程分离,使得构造过程可以独立地改变,而不会影响到使用它的客户端。 - **可扩展性**:通过增加新的具体建造者类,可以轻松地扩展产品类型,而无需修改已有代码。 - ...

    (PHP设计模式手册)php|architect's Guide to PHP Design Patterns

    4. **构造者模式**:分离对象的构造过程和表示。PHP中的复杂对象构造可以通过构造者模式来逐步构建,避免了长且复杂的构造函数。 5. **装饰器模式**:动态地给对象添加新的行为或职责。在PHP中,装饰器常用于扩展...

    JAVA常见的设计模式+源码+ppt+pdf

    4. **构造者模式**:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。Java中`java.lang.StringBuilder`和`java.lang.StringBuffer`就是构造者模式的实例。 5. **原型模式**:通过复制已有...

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

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

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

    建造者模式(Builder Pattern...在实际项目中,建造者模式常用于复杂对象的构建,例如数据库连接配置、电子邮件消息构造等场景。通过建造者模式,我们可以更灵活地控制对象的创建过程,同时保持代码的清晰和可维护性。

    46丨建造者模式:详解构造函数、set方法、建造者模式三种对象创建方式1

    建造者模式是一种设计模式,主要用于复杂对象的构建。在编程中,我们经常使用构造函数或set方法来创建对象,但当对象的构造过程变得复杂,尤其是涉及到多个可选参数时,传统的构造方式可能会导致代码可读性和维护性...

Global site tag (gtag.js) - Google Analytics