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

学习:生成器(Builder)

阅读更多

用来构建复杂的实例,java的StringBuilder就是一个Builder模式的例子。

 

意图:

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

 

结构:


 

代码示例:

Builder类

public abstract class Builder {
	protected String product;
	
	public Builder() {
		product = new String("");
	}

	public void buildPart(String part) {
		//默认空实现
	}
	
	public String getResult() {
		return product;
	}
}

 

ConcreteBuilder类

public class ConcreteBuilder extends Builder {

	@Override
	public void buildPart(String part) {
		product += part;
	}
}
 

 

Director类

public class Director {
	private Builder builder;
	
	public Director(Builder builder) {
		this.builder = builder;
	}
	
	public void Construct() {
		for (int i = 0; i < 10; i++) {
			builder.buildPart("aaa");
		}
	}
	
	public String getResult() {
		return builder.getResult();
	}
}

 

调用

public class Client {

	public static void main(String[] args) {
		Director dir = new Director(new ConcreteBuilder());
		dir.Construct();
		System.out.println(dir.getResult());
	}
}

 

优点:

使你可以改变一个产品的内部表示;

它将构造代码和表示代码分开;

使你可对构造过程进行更精细的控制;

 

适用:

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

 

相关模式:

    Abstract Factory和Builder比较相似。主要的区别是Builder模式着重于一步步构造一个复杂对象。而 Abstract Factory着重于多个系列的产品对象(简单的或是复杂的)。Builder在最后的一步返回产品,而对于 Abstract Factory来说,产品是立即返回的。

    Composite通常是用Builder生成的

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

相关推荐

    ACCP5.0 .Net代码生成器WF_CodeBuilder

    宏海科技代码生成器(1.0 bete) 使用说明: 采用三层模式生成代码 ,每个层都分为两部分 Auto文件夹为自动生成的完整代码,外面的为用户自己写方法用。 1: 先将三层搭建好(实在懒的话,一个项目也行),添加好引用,...

    e语言-易数据库代码直接生成器

    资源介绍:根据指定的一个易语言数据库,直接将查询、修改、增加、删除等源代码自动生成,省却了很多麻烦。特别是对字段多且复杂的数据库,提高工作效率十倍以上资源作者:易语言数据库学习资源下载:

    C#.Code.Builder.V1.2.(C#代码生成器).产生支持多种数据库的实体代码

    这个不知道是不是有重复,文档很好,一起发上,学习。

    随机密码生成器

    PB9编写8-20位随机密码生成器(密码位数可根据em控件自己设置),全部源码,无保留,仅供参考,共同交流学习

    ipbb:IPbus Builder工具

    IPbus生成器 IPbus Builder(IPBB)是用于简化多个平台上的模块化固件项目1的综合,实现和仿真的工具。 入门 ipbb可以通过整个系统范围内的pip(在整个系统范围内或每个用户)或在virtualenv中安装。 点安装: ...

    PostCaptain:静态站点生成器节点模块

    这是一个学习如何创建一个独立的节点模块来生成静态站点的项目。 #安装 安装步骤: 创建一个新目录,您将在其中存储您的新网站。 在您的新目录中,创建一个名为“package.json”的新文本文件 将以下代码粘贴到新...

    form-builder:基于文本的表单生成器,适合那些不想为创建表单而烦恼填写表单的开发人员

    什么是Form-Builder? 那里有数十个表单构建者。 这是不同的,因为它不要求您填写表格来创建表格。 它面向的是开发人员和其他喜欢编写文本并且不使用拖放式精美UI的人。 文字为纯英语,不需要学习任何新语言。我为...

    WYSIWYG Web Builder 14.3.4 绿色汉化版

    WYSIWYG Web Builder网页生成器是一个所见即所得(你看到的是什么,你得到的就是什么)用于创建网页的程序。所见即所得意味着成品页面将显示正是它被设计的方式。该程序生成的HTML(超文本标记语言)标记,而你指向...

    StringBuilder字符串生成工具

    主要生成StringBuilder 字符串 类似 StringBuilder builder = new StringBuilder(); builder.AppendFormat("&lt;span class=\"navSep\"&gt;&lt;/span&gt;\r\n"); ...builder.AppendFormat("学习园地&lt;/a&gt;\r\n");

    SQL Server 2008 Reporting Services (SSRS)动手实验操作教程

    本动手实验将向您演示如何使用报表设计器来创建数据源连接,定义简单查询并生成包含数据的布局。 动手实验2:向报表添加参数 按照本动手实验中的步骤来学习添加控制报表外观和内容的参数。 动手实验3:创建基本矩阵...

    graph-builder-ui:GraphBuilder 项目新的酷炫、花哨且响应Swift的用户界面

    图形生成器-ui GraphBuilder 项目 ( ) 的全新酷炫、快速、精美、易于使用且响应Swift的用户界面 试试看: : 注意:我只是在学习如何使用 Git、GitHub 和所有网络技术

    php-query-builder:PHP 查询构建器

    PO 查询生成器用于简化 SQL 组合的查询生成器重要通知:已弃用 该项目已被弃用,取而代之的是安装通过 Composer 安装将 lib 附加到您的 composer.json 中的需求键。 { // composer.json // [..] require : { // ...

    powerbuilder案例开发集锦(源码光盘)1

    pb案例开发集锦,适合初学者学习,有经验也可以看看,里头有很多巧妙的应用。 我在这里列出所有的目录。 &lt;br&gt; 源程序使用说明 一、功能 &lt;br&gt; 本光碟中提供了与图书完全一致的程序源代码和编译好的可执行...

    Powerbuilder9.0实用教程源代码

    1.1.2 为什么要学习PowerBuilder 9.0 2 1.1.3 PowerBuilder的概述 2 1.1.4 PowerBuilder的特点 3 1.1.5 PowerBuilder 9.0的新特性 6 1.2 安装PowerBuilder 9.0软硬件需求 9 1.2.1 软件环境需求 9 1.2.2 硬件...

    electron-test-app-with-electron-builder:最小的电子应用模板以及配置的电子生成器

    带电子助洗剂的电子自举 克隆并运行以快速查看Electron的运行以及构建设置 这是基于Electron文档中的《的最小的Electron应用程序。 使用 要克隆和运行此存储库,您需要在计算机上...电子学习资源 所有文档 由社区创建的

    Burger-Builder:一个简单的汉堡构建器应用程序,用于学习React.js

    汉堡建筑商一个简单的汉堡构建器应用程序,用于学习React.js应用程序的处理流程用户可以通过“身份验证”选项在应用程序上注册。 用户可以从支持的原料中选择自己想要的汉堡。 用户可以通过填写联系数据表格来订购...

    vocabulary-builder:一个网络应用程序,可帮助您在学习外语时发展词汇量

    词汇量生成器 一个网络应用程序,可帮助您学习学习外语时遇到的新单词。 它基于React和Firebase构建。 您可以在用户友好的UI中提交不熟悉的单词,并将它们存储在Firebase数据库中,从而可以从任何地方访问它们。 ...

    ElasticSearch查询构建器「ElasticSearch Query builder」-crx插件

    该chrome扩展程序提供了易于使用的界面来配置不同的权重并动态增强选定字段的搜索结果,这将通过提供获得所需搜索结果所需的索引设置和文档映射来减少学习曲线,并为您可以通过在ES中运行相同的查询来减少开发时间,...

    DatabaseApplicationBuilder(数据库建立程序软件)v4.0免费安装版

    Database Application Builder是Longtion软件公司出品的一款功能强大的数据库应用程序生成器,它可以创建数据库应用程序和Web应用程序,凭借其直观的集成开发环境(IDE)和拖放对象,学习起来非常快速。它

    live-composer-page-builder:适用于WordPress的免费页面构建器插件http:livecomposerplugin.com

    免费的WordPress拖放页面生成器插件 在WordPress中创建唯一页面,而无需编写任何代码。 首席开发人员: 最初的插件构想和开发: 描述 Live Composer是一个前端WordPress页面构建器插件。 前端意味着您可以直接在...

Global site tag (gtag.js) - Google Analytics