`
Ydoing
  • 浏览: 100291 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

设计模式之生成器模式(Builder)-创建模型

 
阅读更多

1.意图

将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.

2.适用性

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

3.结构

这里写图片描述

4.参与者

  • Builder: 为创建一个Product对象的各个部件指定抽象接口。
  • ConcreteBuilder: 实现Builder的接口以构造和装配该产品的各个部件。
  • Director: 构造一个使用Builder接口的对象。
  • Product: 表示被构造的复杂对象。

5.效果

  • 1) 它使你可以改变一个产品的内部表示,同时隐藏该产品是如何装配的.
  • 2) 它将构造代码和表示代码分离.
  • 3) 它使你可以对构造过程进行更精细地控制.

6.相关模式

  • Abstraction Factory与Builder相似,因为它们都是创建复杂的对象.主要区别是Builder模式着重一步一步地构建复杂对象.而Abstraction Factory着重多个产品系列(产品族).Builder模式在最后一步返回产品,而Abstraction Factory来说,产品是立即返回的.
  • Composite通常是Builder生成的.
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码《Objective-C编程之道:iOS设计模式解析》是基于iOS的软件开发指南。书中应用GoF的经典设计模式,介绍了如何在代码中应用创建型模式、结构型模式和行为模式,...

    C#23种设计模式_示例源代码及PDF

    原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...

    源码:阎宏设计模式光盘

    com.javapatterns.keygen 专题:序列键生成器与单例及多例模式 com.javapatterns.liskov 里氏代换原则 com.javapatterns.lod 迪米特法则 com.javapatterns.mediator 调停者模式 com.javapatterns.memento 备忘录...

    asp.net知识库

    关于能自定义格式的、支持多语言的、支持多数据库的代码生成器的想法 发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--序 XCodeFactory3.0完全攻略--基本思想 XCodeFactory...

    23个软件设计类图详解.rar

    2、Builder 生成器 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 3、Factory Method 工厂方法、简单工厂 4、Prototype 原型 5、Singlegton 单例模式 7个结构模式: 1、Adapter ...

    JAVA与模式

    单例模式与MX记录 com.javapatterns.multilingual 专题:多例模式与多语言支持 com.javapatterns.keygen 专题:序列键生成器与单例及多例模式 com.javapatterns.builder 建造者模式 ...

    Expression-Builder

    表达式生成器 几乎在我们构建的每个企业应用程序中,我们发现自己需要一个具有漂亮现代 UI 的查询/表达式构建器。 由于我们没有为此找到一个好的开源组件,我们决定推出自己的。 为了使其可重用,我们对其进行了...

    pH7 Social Dating CMS (pH7Builder):red_heart:-开源

    pH7CMS是一款专业,免费和开源PHP社交约会生成器软件(主要为网站管理员和开发人员设计...)。 该社交约会Web应用程序完全使用MVC模式(模型-视图-控制器)以面向对象PHP(OOP)进行编码。 它是低资源密集型,极其...

    iphone开发入门经典源码

    6.1 了解设计模式模型.视图控制器 6.1.1 制作“意大利面条式”代码 6.1.2 使用MVC:将应用程序设计结构化 6.2 Xcode和Inter Face Builder如何实现MVC 6.2.1 视图 6.2.2 视图控制器 6.2.3 数据模型 6.3 使用模板vicw....

    python-ngoschema:定义带有json模式,对象管理和代码生成的类

    概述 docs ... ngoschema旨在成为领域驱动设计和模型驱动架构的工具包。 该库建立在之上, 是用于JSON模式验证的python实现。 免费软件:GNU通用公共许可证v3 安装 :: 点安装ngoschema 文献资料 ...

    java8集合源码-alexa-utterance-generator:如果您想为您的Alexa技能生成成百上千的变体话语,请使用此工具

    技能表达和模式生成器 (V2.0) 这是一个方便的工具,许多开发人员已经使用它来为他们的自定义 Alexa 技能创建更好的交互模型。 该工具引入了一种易于阅读的语法,只需编写几行即可生成成百上千的变体示例话语和槽值。...

    java面试800题

    Q0051 设计模式主要几种 "创建模式 factory工厂模式、prototype原始模型模式、singleton单例模式、builder建造模式 结构模式 facade门面模式、proxy代理模式、adapter适配器(变压器)模式、composite合成模式、...

    flex3的cookbook书籍完整版dpf(包含目录)

    使用Cairngorm框架生成器生成应用程序骨架 21.9节.学习常用的提高性能的技巧 21.10节.在组件中创建元数据 第二十二章.模块(Modules)和运行时共享库(RSLs)(669) 22.1节.创建一个运行时共享库 22.2节.使用跨域的RSL ...

    iphone3开发基础教程

    3.6.1 在Interface Builder中创建视图 34 3.6.2 连接所有元素 36 3.6.3 测试 39 3.7 小结 39 第4章 更丰富的用户界面 40 4.1 满是控件的屏幕 40 4.2 活动、静态和被动控件 42 4.3 创建应用程序 42 4.3.1 导入图像 ...

    vc++ 开发实例源码包

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! 如题。详细见源码。 GMem 内存管理单元源码。GMem.cpp...

    ActionScript开发技术大全

    2.2.2在FlexBuilder3下创建ActionScript3.0项目 15 2.3服务端部署 16 2.3.1安装JDK 16 2.3.2安装Tomcat服务器 18 2.3.3Tomcat集成RED5服务器 20 2.4安装VisualBasic6.0 22 2.5小结 23 第3章ActionScript3.0语法 24 ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    9.2.2 演示模式的创建 314 9.3 执行基本的SELECT语句 317 9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

Global site tag (gtag.js) - Google Analytics