1、意图;
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
2、场景描述;
编辑软件的“另存为”功能便是生成器模式的一个体现。例如,Word的另存为功能,可以选择将文件存储为doc、docx、pdf、txt等格式,但是通过word的另存为功能转变文档的存储格式时都采用了“文件 --> 另存为”,相同的创建过程。当需要对word支持新的类型转换时,例如,添加*.newtype类型的转换,此时只需在“另存为”对话框的“选择存储类型”中添加一行"*.newtype"即可,用户无需知晓具体的存储格式的转变过程,用户只需获得“newtype”类型的文档产品即可。
3、生成器模式类图;
角色:
- Builder:为创建一个Product对象的各个部件指定抽象接口;
- ConcreteBuilder:实现Builder接口以构造和装配该产品的各个部件;定义并明确它所创建的表示;提供一个检索对象的接口(如GetResult方法);
- Director:构造一个使用Builder接口的对象;
- Product:表示被构造的复杂对象(ConcreteBuilder创建该产品的内部表示并定义它的装配过程);包含了定义组成部件的类,包括将这些部件装配成最终产品的接口。
4、协作;
- 用户类创建Director对象,并用它想用的Builder对象进行配置;
- 导向器Director对象控制想要生成的产品部件,并将部件生成指令传递给Builder;
- Builder生产组成产品的部件,并将部件组装到产品中;
- 用户类从生成器类中获取产品。
5、适用性;
- 当创建负责对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时。
6、代码实现;
6.1 产品类FormattedFile;
package com.crazysnail.builder; /** * 格式化文件,doc、docx、txt、pdf等类型文件的超类 */ public class FormattedFile { private String title; private String font; private String paragraph; //文件基本信息 /*getter、setter方法*/ }
6.2 Builder类及其子类;
FileFormatConverter类;
/** * *文件格式转换父类,提供了对接口的默认实现 * */ public class FileFormatConverter { private FormattedFile file; public FileFormatConverter(){ file = new FormattedFile(); } /*对Word文字进行转换*/ public void convertCharacter(){ } /*对Word字体进行格式转换*/ public void convertFont(){ } /*对Word段落、标题等进行格式转换*/ public void convertParagraph(){ } public FormattedFile getFile(){ return file; } }所有Builder的父类FileFormatConverter类,当需要对某些方法提供默认实现时,定义为类,此时它的子类中可以对省略对某些父类中方法的重载;当Builder的父类定义为接口时,则每个具体的Builder必须提供对每个接口方法的个性化的定义;可根据实际情况在两种实现上选择。
PdfFormatConverter类;
public class PdfFormatConverter extends FileFormatConverter { private FormattedFile file; public PdfFormatConverter(){ file = new FormattedFile(); } @Override public void convertCharacter(){ System.out.println("将file中的字符转化为pdf中对应的表示"); } @Override public void convertFont(){ System.out.println("将file中的字体转化为pdf中的默认字体"); } @Override public void convertParagraph(){ System.out.println("将file的段落格式转化为pdf中的段落格式"); } public FormattedFile getFile(){ return file; } }PdfFormatConverter作为ConcreteBuilder类,提供了将文件转化为pdf格式文件的实现。
相关推荐
生成器模式(Builder Pattern)是一种设计模式,它允许我们分步骤构建复杂对象,而无需暴露其构造过程。这种模式在创建对象时提供了更大的灵活性,特别是当构造过程需要多个步骤或者对象有不同的构造方式时。Builder...
生成器模式,也称为建造者模式,是一种设计模式,用于创建复杂对象,它允许你按照一系列步骤来构造对象,而这些步骤可以通过不同的实现来产生不同形式的对象。生成器模式的核心在于分离了对象的构造过程和表示细节,...
生成器模式是一种创建型设计模式,它允许我们分步骤构建复杂对象,同时隐藏了对象组装的细节。这种模式的核心思想是将产品的构造过程与产品本身分离,使构造过程可以有不同的表示方式。生成器模式通常由四个主要角色...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第4节:创建型模式Builder生成器模式
Builder模式是一种创建型设计模式,它提供了一种创建对象的抽象接口,并允许使用不同的实现来控制对象的构造过程。在C#中,Builder模式经常被用于复杂对象的构建,特别是当构建过程需要多个步骤或者需要在不同环境中...
Builder模式是一种创建型设计模式,它提供了一种...在观看“C#视频-面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式)”的视频教程时,可以深入理解Builder模式的工作原理,学习如何在实际项目中有效应用。
生成器模式是一种设计模式,属于创建型模式,它允许我们分步骤构建复杂对象,而无需提前知道整个对象的完整结构。这种模式的核心在于延迟初始化,它使得我们可以根据需要逐步构建对象,而不是一次性创建所有部分。在...
生成器模式(Builder Pattern)是一种创造型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示。这种模式可以在以下情况下使用: 1. 当创建复杂对象的算法应该独立于该对象的组成...
生成器模式(Builder Pattern)是Java设计模式中的创建型模式之一,主要解决复杂对象的构建问题,通过将构造过程逐步分解,使得构造过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常用于创建...
创建型模式 (100%) 设计模式面面观(5):抽象工厂模式(AbstractFactory)-创建型模式 (100%) 设计模式面面观(6):生成器模式(Builder)-创建型模式 (100%) 设计模式面面观(7):原型模式(Prototype...
Builder模式是一种创建型设计模式,它提供了一种创建对象的抽象接口,并允许使用不同的实现来创建复杂的对象。在C#中,Builder模式可以帮助我们在不暴露复杂构造过程的情况下,创建具有多种构建步骤的对象。这种模式...
生成器模式,也被称为构建器模式,是一种软件设计模式,主要用在对象的创建过程中,它将复杂的构建过程分解为一系列简单的步骤,使得构建过程可配置,并且可以独立于对象的表示进行。在C#中,生成器模式的实现通常...
生成器模式是一种设计模式,属于创建型模式,它在软件工程中被广泛应用于解决大量对象的创建问题。这种模式的主要思想是将对象的创建过程分解为一系列步骤,使得客户端可以根据需要选择执行这些步骤,从而实现延迟...
在《Head First Design Patterns》文中是这么介绍生成器模式的,“封装一个产品的构造过程,并允许按步骤构造”,感觉说得不是很清楚。而在网上查找相关资料是这么解释的,建造者模式(Builder Pattern)使用多个简单...
Builder 模式(生成器模式) Builder 模式是一种创建型设计模式,它将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。GoF 将其定义为将一个复杂对象的构建与它的表示分离,使得同样的...
Builder 模式(生成器模式) Builder 模式是一种创建型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder 模式与 Abstract Factory 模式非常像,但是它们之间有着...
生成器模式是设计模式中的一种,它属于创建型模式,主要用来处理复杂对象的构建过程。在这个“iOS生成器模式”中,我们将深入探讨如何在iOS开发中应用这个模式。 生成器模式的核心思想是将对象的创建过程和对象本身...
CodeBuilder-v2.0.0.4是一款专业的代码生成器工具,它旨在帮助开发者提高工作效率,减少手动编写重复性代码的工作量。代码生成器在软件开发过程中扮演着至关重要的角色,尤其是在大型项目中,它可以自动根据数据库...
生成器模式是一种创建型设计模式,它提供了一种方法来分离开对象的构建过程和其表示方式,允许使用相同的构造过程生成不同类型的对象。在实际应用中,生成器模式常用于复杂对象的构建,尤其是在需要根据不同的条件或...