`
eneasy
  • 浏览: 126357 次
  • 性别: 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写的构造者模式的小demo,源码里有详细的注释,保证一看就懂。欢迎交流指点。

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

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

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

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

    自定义构建者dialog.rar

    自定义构建者dialog.rar

    SSM模式中式快餐企业供应管理系统毕业设计程序

    采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...

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

    46 | 建造者模式:详解构造函数、set方法、建造者模式三种对象创建方式2020-02-17 王争设计模式之美进入课程讲述:冯永吉时长 10:31大小 8.4

    Java运用设计模式中的建造者模式构建项目的实例解析

    主要介绍了Java运用设计模式中的建造者模式构建项目的实例解析,建造者模式对外隐藏创建过程的产品,使用组合的方式,由指挥者来决定建造的流程,需要的朋友可以参考下

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

    设计模式-建造者模式,该模式涉及产品,构造者,指挥者、调用者等几个角色,职责明确,在实际项目中使用得比较多。

    java设计模式

    第36章 观察者模式+中介者模式 36.1 事件触发器的开发 36.2 混编小结 第37章 规格模式 37.1 规格模式的实现 37.2 最佳实践 第38章 MVC框架 38.1 MVC框架的实现 38.1.1 MVC的系统架构 38.1.2 模型管理器 38.1.3 值栈 ...

    Python实现的建造者模式示例

    主要介绍了Python实现的建造者模式,结合完整实例形式分析了构造者模式的具体定义与相关使用操作技巧,需要的朋友可以参考下

    JavaScript模式中文[pdf] 百度云

     装饰者模式  策略模式  外观模式  代理模式  中介者模式  观察者模式  小结  第8章 DOM和浏览器模式  关注分离  DOM脚本  事件  长期运行脚本  远程脚本  配置JavaScript  载入策略

    Delphi模式编程第一分卷

    6.3.1 一个数据集对象产品的建造者模式 6.3.2 范例小结 第7章 单例模式(Singleton) 7.1 模式解说 7.2 结构和用法 7.2.1 模式结构 7.2.2 代码模板 7.2.3 Delphi对象构造机制与单例模式 7.3 范例与实践 ...

    Delphi模式编程第二分卷

    6.3.1 一个数据集对象产品的建造者模式 6.3.2 范例小结 第7章 单例模式(Singleton) 7.1 模式解说 7.2 结构和用法 7.2.1 模式结构 7.2.2 代码模板 7.2.3 Delphi对象构造机制与单例模式 7.3 范例与...

    自定义持久层框架之MyBatis.zip

    无聊时写着玩之徒手撸自定义持久层MyBatis...将会涉及到的一些知识点:工厂模式(Factory工厂模式)、构造者模式(Builder模式)、代理模式,反射,自定义注解,注解的反射,xml解析, 数据库元数据,元数据的反射等。

    ConstructorConductor

    实例数组.js 名称.js 数组属性.js 测验应用程序.js学习目标制造者模式和构造者模式的区别“this”关键字的作用是什么并且能够使用它'new' 关键字的作用以及当使用 'new' 关键字调用函数时 JavaScript 编译器的作用...

    construction-conduction

    制造者模式和构造者模式的区别 “this”关键字的作用是什么并且能够使用它 'new' 关键字的作用以及当使用 'new' 关键字调用函数时 JavaScript 编译器的作用 JavaScript 中的原型是什么,并且能够在函数原型上添加...

    第7章_建造者模式.ppt

    而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的...

Global site tag (gtag.js) - Google Analytics